netlogo - 如何解决错误:观察者无法运行代码
问题描述
运行以下代码时:
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
可能被设计为由乌龟而不是观察者运行,这也会给你同样的错误。
希望这会有所帮助,查尔斯
推荐阅读
- python - 选项卡关闭时的 Django 过期会话
- tableau-api - Tableau 将维度转换为度量
- c# - 如何从连续的数据c#中形成5分钟的开高低收盘价?
- elasticsearch - Kibana v 7.9.2 hour_minute_second 的确切格式
- jenkins - 在 Jenkins Pipeline 中一次触发多个构建并行
- python - 设置 numpy 数组的列值的奇怪结果
- java - Hibirnate:无法使用@Transactional 懒惰地初始化角色集合
- java - Jackson JSON 反序列化包装对象
- python - 2个数据帧之间的条件行数
- vb.net - SendMessage 关闭监视器使一些系统在 vb 中休眠