在AnyLogic Main中的函数中引用“ this”

问题描述

我在Main中有一个名为myFunction函数,并返回一个布尔值:

if(this instanceof MyAgent) 
    return true;
else;
    return false;

功能FactoryAgent的流程块中被调用,它只是检查流过该流程块的代理是否为MyAgent类型。但是,当我调用函数时,出现以下错误Description: Incompatible conditional operand types Main and FactoryAgent.

直接在流程块的this instanceof MyAgent字段中输入On enter即可。如何在this中的函数中正确引用Main

解决方法

这是错误的...关键字“ this”是指您在其中调用函数的代理。

如果main中有一个流程块,则此“指向”是main,如果在代理FactoryAgent中使用它,则“ this”指向FactoryAgent ...这意味着它将始终返回false,因为“ this”永远不是MyAgent的实例

相反,您应该使用局部变量“ agent”并将其全部更改为

if(agent instanceof MyAgent) 
    return true;
else;
    return false;

如果要在任何地方调用此函数,则需要使用一个参数来调用它,该参数是流经该过程的代理。如果它可以是多种类型的代理,则参数将是代理类型,或者可能是对象类型。

如果您不知道函数具有参数的含义,或者您不知道可以使用名为agent的局部变量,我可以解释一下,但这是非常基础的术语,我以为你知道