如何解决错误:代码不能被观察者运行。

问题描述 投票:0回答:1

当运行下面的代码。

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
1个回答
1
投票

蒲山。

正如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 可能被设计成由海龟而不是观察者来运行,这也会给你同样的错误。

希望这能帮到你,查尔斯

© www.soinside.com 2019 - 2024. All rights reserved.