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" 问号,这样更容易记住它代表什么,而且,如果你遍历多个列表,你可以声明多个变量,每个列表一个。
我在转换旧的 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" 问号,这样更容易记住它代表什么,而且,如果你遍历多个列表,你可以声明多个变量,每个列表一个。