Netlogo - 预期的常量错误
Netlogo - expected constant error
我有这行代码:
set SSB sum [foreach [foglie with [ipotetico? = false]] [((([media] of self ) - media-tot ) ^ 2) * ([larg] of self * [altez] of self)]]
- foglie 是代理列表;
- media-tot是全局变量
我不明白为什么会出现错误:
expected constant
我发现了以下漏洞,但在我看来它并不优雅,甚至可能更慢:
set SSB 0
ask foglie with [ipotetico? = false] [ set SSB (SSB + (( [media] of self - media-tot) ^ 2) * ([larg] of self * [altez] of self)) ]
- 你怎么看?
- 我怎样才能使第一个代码起作用?
- 第二个代码是否等效?
一个好的问题将包括一个最小的问题示例。在这种情况下,在您上面的第一次尝试中,您似乎不了解代理集和列表之间的区别,也不了解 foreach
的用法。所以你需要阅读这篇文章。
sum
需要一个列表作为输入
- 要用括号表示法制作列表,您只需要包含常量;否则,使用
list
- 出于上述原因,将代理集放在括号中不会生成列表,但即使您使用
list
,您也会得到一个包含代理集作为元素的列表,而不是代理列表
foreach
不是 return 列表(但 map
是)
假设 media
、larg
和 altez
是 foglie 属性并且 media-tot
是全局属性,您可以执行以下操作:
sum [(media - media-tot) ^ 2 * (larg * altez)] of (foglie with [ipotetico? = false])
我有这行代码:
set SSB sum [foreach [foglie with [ipotetico? = false]] [((([media] of self ) - media-tot ) ^ 2) * ([larg] of self * [altez] of self)]]
- foglie 是代理列表;
- media-tot是全局变量
我不明白为什么会出现错误:
expected constant
我发现了以下漏洞,但在我看来它并不优雅,甚至可能更慢:
set SSB 0
ask foglie with [ipotetico? = false] [ set SSB (SSB + (( [media] of self - media-tot) ^ 2) * ([larg] of self * [altez] of self)) ]
- 你怎么看?
- 我怎样才能使第一个代码起作用?
- 第二个代码是否等效?
一个好的问题将包括一个最小的问题示例。在这种情况下,在您上面的第一次尝试中,您似乎不了解代理集和列表之间的区别,也不了解 foreach
的用法。所以你需要阅读这篇文章。
sum
需要一个列表作为输入- 要用括号表示法制作列表,您只需要包含常量;否则,使用
list
- 出于上述原因,将代理集放在括号中不会生成列表,但即使您使用
list
,您也会得到一个包含代理集作为元素的列表,而不是代理列表 foreach
不是 return 列表(但map
是)
假设 media
、larg
和 altez
是 foglie 属性并且 media-tot
是全局属性,您可以执行以下操作:
sum [(media - media-tot) ^ 2 * (larg * altez)] of (foglie with [ipotetico? = false])