NetLogo 匿名过程的问题

Problem with NetLogo anonymous procedures

我在转换旧的 NetLogo 代码以使用 NetLogo 6.0.1 时遇到问题

我遇到问题的线路如下:

set recv turtle (read-from-string ?)

我知道吗?已更改为 ->。但是我不知道这条线是如何工作的。

整个代码为:

to send [msg]
  let recipients get-receivers msg
  let recv 0
  foreach recipients [
   set recv turtle (read-from-string ?)
   if recv != nobody [without-interruption [ask recv [receive msg]]] ;; read-from-string is required to convert the string to number
  ]
end

表示 recipients 的每个元素的 ? 现在被 foreach 括号内声明的局部变量所取代。在这里,我声明了一个变量 recip,但它可以是任何你想要的。

    to send [msg]
      let recipients get-receivers msg
      let recv 0
      foreach recipients [recip ->
       set recv turtle (read-from-string recip)
       if recv != nobody [without-interruption [ask recv [receive msg]]] ;; read-from-string is required to convert the string to number
      ]
    end

这有两点好处:你可以 "name" 问号,这样更容易记住它代表什么,而且,如果你遍历多个列表,你可以声明多个变量,每个列表一个。