Netlogo错误:没有名字命名NAME?已被定义

时间:2016-11-28 22:56:24

标签: model netlogo globals

这是我第一次来这里,如果我没有正确使用这个,请告诉我。 我刚开始使用Netlogo,我对某些事感到困惑。 在模型库中有Wolf Sheep Predation的示例代码。在此代码中定义了以下内容:

globals [grass] 

所以一切都很好。但后来我开始制作自己的代码,使用这个作为基础,我遇到了以下错误:

  

没有什么叫氧气?已定义。

其中氧气是我自己的变量。为了弄清楚出了什么问题,我回到了Wolf Sheep Predation模型并尝试将全局名称更改为其他名称。例如:奇怪,(使用查找和替换所有,也用手几次)。结果是同样的错误,而如果我只将草改为草,它会起作用。现在我想知道有没有关于Globals的具体规则以及它们是如何使用的,有没有人知道为什么这个错误仍然在Wolf Sheep Predation模型中给出?

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

1 个答案:

答案 0 :(得分:0)

您必须小心查找和替换。在“狼羊捕食”模型中,有两个全局变量,名称非常相似。首先是grass变量,它在globals [grass]部分中定义。其次,在名为grass?的接口上有一个switch-variable。

如果执行查找和替换并将代码中的所有“草”字符串替换为“mystring”,grass将更改为mystring,但grass?也将更改为mystring?。因为grass?是在模型的接口上定义的,所以这个全局的名称将保持不变,并且当你在代码中引用mystring?时代码会产生错误,但是这个全局都没有在接口也不在全局变量声明中。