当运行下面的代码。
to modify
let elements n-values 7 [(list)]
ask turtles [
let a item leader elements
set a lput (who + 1) a
set elements replace-item leader elements a
]
let CS []
let prevCS CS
set CS 0
foreach elements [
show elements
print ("elements")
if length ? > 0 [
set S lput (sort ?) S
set CS CS + getValue (sort ?)
]
]
end
我得到的错误是 。
this code can't be run by the observer
error while observer running IF
在行:
if length ? > 0
我不知道如何纠正错误,任何帮助将是感激。
先谢谢你。
蒲山。
正如JenB所建议的,您确实应该升级到NetLogo 6.1.1。 5.3.1版本已经不支持了,别人回答你的问题会越来越难。
说到这里,让我推测一下答案。 在代码段中
if length ? > 0 [
set S lput (sort ?) S
set CS CS + getValue (sort ?)
]
你提到的变量 S
和程序 getValue
. S
没有定义 to modify
,所以它一定是全局的,应该没问题,或者是海龟自己的变量,那就不行了。 观察者不能直接访问它。 同理。getValue
可能被设计成由海龟而不是观察者来运行,这也会给你同样的错误。
希望这能帮到你,查尔斯