这是我第一次来这里,如果我没有正确使用这个,请告诉我。 我刚开始使用Netlogo,我对某些事感到困惑。 在模型库中有Wolf Sheep Predation的示例代码。在此代码中定义了以下内容:
globals [grass]
所以一切都很好。但后来我开始制作自己的代码,使用这个作为基础,我遇到了以下错误:
没有什么叫氧气?已定义。
其中氧气是我自己的变量。为了弄清楚出了什么问题,我回到了Wolf Sheep Predation模型并尝试将全局名称更改为其他名称。例如:奇怪,(使用查找和替换所有,也用手几次)。结果是同样的错误,而如果我只将草改为草,它会起作用。现在我想知道有没有关于Globals的具体规则以及它们是如何使用的,有没有人知道为什么这个错误仍然在Wolf Sheep Predation模型中给出?
(我会分享我自己的模型,但它已经很长了,所以它可能不是一个有用的例子)。
答案 0 :(得分:0)
您必须小心查找和替换。在“狼羊捕食”模型中,有两个全局变量,名称非常相似。首先是grass
变量,它在globals [grass]
部分中定义。其次,在名为grass?
的接口上有一个switch-variable。
如果执行查找和替换并将代码中的所有“草”字符串替换为“mystring”,grass
将更改为mystring
,但grass?
也将更改为mystring?
。因为grass?
是在模型的接口上定义的,所以这个全局的名称将保持不变,并且当你在代码中引用mystring?
时代码会产生错误,但是这个全局都没有在接口也不在全局变量声明中。