NetLogo报错Expected a literal value问题排查求助
问题根因
你遇到的expected a literal value报错来自NetLogo的列表构造语法错误,同时代码还有2个附加问题:
- 列表构造语法错误:你直接用
[ value1 value2 value3 ]构造存储全局变量值的列表,NetLogo中方括号直接包裹的内容会被解析为字面量符号,不会自动读取变量的实际值,只有纯字面量列表(比如[1 2 3]、["a" "b" "c"])才能用这种写法,要把变量值装入列表必须调用list函数。 - 语法结构不匹配:代码末尾多了两个多余的闭合方括号
]。 - 逻辑冗余:
sprout-turtles 1 [ ... ]内部的代码块默认作用于刚创建的那1只海龟,不需要额外嵌套ask turtles,多余的ask turtles会导致所有已存在的海龟都被重复修改属性,不符合预期。
修复后可运行代码
turtles-own [ metabolism reproduction ] to setup let list1 (list value1 value2 value3) ;; 用list函数读取全局变量值构造列表 let list2 (list number1 number2 number3) foreach list1 [ item1 -> foreach list2 [ item2 -> sprout-turtles 1 [ set metabolism item1 set reproduction item2 setxy random-xcor random-ycor ;; 取消注释即可实现随机分布 ] ] ] end
内容的提问来源于stack exchange,提问作者Rafaela
相关产品推荐
相关产品推荐

