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

Model Netlogo错误:没有命名名称?已定义,model,netlogo,globals,Model,Netlogo,Globals,这是我第一次来这里,如果我没有正确使用这个,请让我知道。 我刚开始使用Netlogo,我有点困惑。 在模型库中有狼羊捕食的示例代码。本规范中定义了以下内容: globals [grass] 所以一切都很好。但后来我开始编写自己的代码,并以此为基础,我遇到了以下错误: 没有氧气?已经定义了 氧气是我自己的变量。为了找出问题所在,我又回到了狼羊捕食模型,并试图将global的名称改为其他名称。例如:奇怪,(使用find和replace all,也可以用手几次)。结果是同样的错误,而如果我只是把草

这是我第一次来这里,如果我没有正确使用这个,请让我知道。 我刚开始使用Netlogo,我有点困惑。 在模型库中有狼羊捕食的示例代码。本规范中定义了以下内容:

globals [grass] 
所以一切都很好。但后来我开始编写自己的代码,并以此为基础,我遇到了以下错误:

没有氧气?已经定义了

氧气是我自己的变量。为了找出问题所在,我又回到了狼羊捕食模型,并试图将global的名称改为其他名称。例如:奇怪,(使用find和replace all,也可以用手几次)。结果是同样的错误,而如果我只是把草换成草,它就会工作。现在我想知道是否有任何关于全球生物的具体规则以及它们是如何使用的,有人知道为什么在狼羊捕食模型中仍然会出现这种错误吗


(我想分享我自己的模型,但它太长了,所以它可能没有示例那么有用)。

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


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

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


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

所有全局变量都必须用
globals
声明。嗯,是的,但这意味着什么?为什么当您只更改全局变量的名称(当然还有指定给相同名称的所有变量)时,程序就不再工作了?如果您在任何地方都只替换在
globals
中声明的变量的名称,那么一切都会正常工作。但是您在引入名为
Oxygen?
的变量时声明了
Oxygen
。如果您共享一个可复制的代码示例,它将帮助我们解决您的问题。请随意劫持我用来提问的模型:所有全局变量都必须用
globals
声明。嗯,是的,但这意味着什么?为什么当您只更改全局变量的名称(当然还有指定给相同名称的所有变量)时,程序就不再工作了?如果您在任何地方都只替换在
globals
中声明的变量的名称,那么一切都会正常工作。但是您在引入名为
Oxygen?
的变量时声明了
Oxygen
。如果您共享一个可复制的代码示例,它将帮助我们解决您的问题。请随意劫持我用来提问的模型: