没有什么名字吗?已被定义

Isa*_*Isa 5 netlogo

我对 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 )

我将不胜感激你的帮助。谢谢你!

Tur*_*ero 1

在版本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)]