Netlogo错误:没有名字名称?已定义



这是我第一次在这里,因此,如果我不正确使用它,请告诉我。我刚刚开始使用Netlogo,我对某些事情感到困惑。在模型库中,有狼绵羊掠夺的示例代码。在此代码中定义了以下内容:

globals [grass] 

,一切都很好。但是后来我开始制作自己的代码,将其用作基础,然后遇到以下错误:

没有什么名字的氧气?已定义。

氧气是我自己的变量。为了弄清楚有什么问题,我回到了狼绵羊掠夺模型,并试图将全球名称更改为其他东西。例如:奇怪(使用查找并全部替换,还用手几次)。结果是同样的错误,而如果我只将草更换为草,那就起作用了。现在我要知道是否有有关全球范围的具体规则,以及它们如何使用,并且有人知道为什么在狼羊捕食模型中仍会给出此错误?

(我会分享自己的模型,但它的模型已经很长,所以它可能不是一个有用的例子)。

您必须在发现和重新定位时要小心。在"狼绵羊掠夺"模型中,有两个具有非常相似名称的全球变量。首先是grass变量,该变量在globals [grass]部分中定义。其次,在名为grass?的接口上有一个开关变量。

如果您执行查找和重新定位,并用" mystring"替换代码中的所有"草"字符串,则grass将更改为mystring,但grass?也会更改为mystring?。由于grass?是在模型的接口上定义的,因此该全局的名称将保持不变,并且代码在代码中引用mystring?时会产生错误,但是该全局既不在接口上也不定义在整体变量声明中。

最新更新