Lambda NetLogo匿名过程存在问题
我在转换旧的NetLogo代码以使用NetLogo 6.0.1时遇到问题 我遇到问题的线路如下:Lambda NetLogo匿名过程存在问题,lambda,netlogo,procedure,anonymous,Lambda,Netlogo,Procedure,Anonymous,我在转换旧的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 ?) i
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
表示
收件人的每个元素的?
现在由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
关于这一点,有两件好事:您可以“命名”问号,这样更容易记住它代表什么,而且,如果您迭代多个列表,您可以声明多个变量,每个列表一个。您能给我们展示一下整段代码吗?代码在哪里?来自例如,如果这是在foreach循环中,则显示foreach循环。谢谢您的回答。请您也帮我完成这部分:报告获取发送者[msg]报告删除“发送者:”第一个(过滤器[不是数字?”和成员?“发送者:?]msg)结束
这是相同的想法。只要看看filter
这篇文章,filter[m->不是数字?m和成员?“发送者:”m]msg
。将问号作为is number?
和member?
原语的名称的一部分,是在msg
列表中取消问号以表示项目的另一个原因。