首页 > 解决方案 > 在 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流程块的字段中输入即可。如何正确引用thisin 中的函数Main

标签: anylogic

解决方案


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

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

相反,您应该使用局部变量“代理”并将所有这些更改为

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

如果你想在任何地方调用这个函数,你需要用一个参数来调用它,这个参数是流经流程的代理。如果它可以是多种类型的代理,那么参数将是代理类型,或者可能是对象类型。

如果你不知道你的函数有一个参数意味着什么,或者你不知道你可以使用一个叫做代理的局部变量,我可以解释一下,但这些术语是如此基础,以至于我会假设你知道


推荐阅读