在NetLogo中,“有”是一种要求吗?

时间:2018-02-16 10:09:40

标签: netlogo

使用以下代码:

breed [girls girl] ;pink
breed [boys boy] ;green

to go
clear-all
create-girls 10 [move-to one-of patches]
create-boys 10 [move-to one-of patches]
end

我期待下一行让女孩们展示相同颜色男孩的数量,即“显示男孩的颜色等于我的颜色”:

ask girls [show count boys with [color = [color] of self]]

但是这取决于每个男孩。这是完成工作的代码:

ask girls [show count boys with [color = [color] of myself]]

为什么自我(我)指的是男孩和我自己(问我的乌龟)是指女孩?关键字“with”是否要求男孩们做点什么,那是什么让它转过来?

1 个答案:

答案 0 :(得分:2)

简答:是的。

askwith原语都适用于在特定代理的上下文中运行的“代码块”(由[]分隔的部分) 。在该块中,self引用当前代理(来自块上下文的代理)和我自己到“外部”代理(在withask的上下文中。叫)。

askwith之间的主要区别在于ask采用命令块(最有可能 )和with采用记者块(只返回一个值)。

请注意,with并不是使用记者块的唯一原语:of是另一种常见情况。使用前一个示例的变体:

ask girls [
  show [color = [color] of myself] of boys
]

每个女孩都会显示一个布尔值列表(列表中每个男孩的一个值,按随机顺序排列):true如果男孩的颜色与女孩颜色相同,false否则