首页 > 解决方案 > 如何解决错误:观察者无法运行代码

问题描述

运行以下代码时:

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

我不知道如何纠正错误,任何帮助将不胜感激。

先感谢您。

标签: netlogo

解决方案


宝山,

正如 JenB 建议的那样,您确实应该升级到 NetLogo 6.1.1。版本 5.3.1 不再受支持,其他人将越来越难以回答您的问题。

话虽如此,让我推测一个答案。在代码段中

 if length ? > 0 [
  set S lput (sort ?) S
  set CS CS + getValue (sort ?)
 ]

你指的是变量S和过程getValueS中没有定义to modify,所以它必须是一个全局的,应该可以,或者是一个海龟自己的变量,这是不可以的。观察者不能直接访问它。同样,getValue可能被设计为由乌龟而不是观察者运行,这也会给你同样的错误。

希望这会有所帮助,查尔斯


推荐阅读