我对 NetLogo 教程有一个小问题。我有以下情况:
报告最佳行动
let x xcor
let y ycor
let dir heading
let best-action 0
let best-utility -100000
foreach actions[
set heading dir
run ?
let utility-of-action get-utility xcor ycor heading
if (utility-of-action > best-utility) [
set best-action ?
set best-utility utility-of-action
]
setxy x y
set heading dir
]
report (list best-action best-utility)
Run Code Online (Sandbox Code Playgroud)
结尾
和...
询问补丁[
foreach 标题 [
let x pxcor
let y pycor
let dir ?
Run Code Online (Sandbox Code Playgroud)
…………
在任何呈现的情况下,标识符“?” 被视为未定义。它应该可以工作,因为即使在 foreach 的示例中,标识符的使用方式也是相同的。检查https://ccl.northwestern.edu/netlogo/docs/programming.html。
我做错什么了吗?有谁知道另一个解决方案,因为我尝试使用一个项目 i 并且该项目的行为已被修改。(查看项目:https://www.youtube.com/watch?v =dBDVkPjyYF4 )
我将不胜感激你的帮助。谢谢你!
在版本6之前的NetLogo中,符号? ?1 ?1等在一些原语中用作占位符,特别是那些处理列表项的原语。
在版本 6 中,使用“匿名”过程引入了新语法。您可以使用旧代码吗?或 ?1 等只需将新的语法元素添加到语句块即可进行少量更改。
| 标题 | 代码 |
|---|---|
单个?占位符 |
添加额外的空间以强调变化 |
| 旧语法 | foreach [ 1 2 3 4 ] [ show ? ] |
| 新语法 | foreach [ 1 2 3 4 ] [ ? -> show ? ] |
多个?1 ?1占位符 |
添加额外的空间以强调变化 |
|---|---|
| 旧语法 | (foreach [1 2] ["a" "b"][ show (word ?1 ?2)] |
| 新语法 | (foreach [1 2] ["a" "b"][ [?1 ?2] -> show (word ?1 ?2)] |