在NetLogo中,是';与';问的一种形式?
使用以下代码:在NetLogo中,是';与';问的一种形式?,netlogo,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 cou
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 myself]]
为什么赛尔夫(我)指的是男孩,而我(问我的乌龟)指的是女孩?关键字“with”是不是让孩子们做点什么,这就是为什么要转换它?简短回答:是的
ask
和with
原语都使用在特定代理上下文中运行的“代码块”(由[
和]
分隔的部分)。在该块内,self
指的是当前代理(来自块上下文的代理),而我指的是“外部”代理(在其上下文中调用了with
或ask
)
ask
和with
之间的主要区别在于ask
接受一个命令块(最有可能执行某项操作的块),而with
接受一个报告程序块(只返回值的块)
请注意,with
并不是使用报告程序块的唯一原语:of
是另一种常见情况。使用上一个示例的变体:
ask girls [
show [color = [color] of myself] of boys
]
将让每个女孩显示一个布尔值列表(列表中每个男孩一个值,按随机顺序):true
如果男孩与女孩的颜色相同,false
否则
ask girls [
show [color = [color] of myself] of boys
]