为什么netlogo对邻居的海龟计数不同?
当我运行以下两行时,我得到了不同的答案。有人知道为什么吗?第一个给出了我想要的答案:为什么netlogo对邻居的海龟计数不同?,netlogo,Netlogo,当我运行以下两行时,我得到了不同的答案。有人知道为什么吗?第一个给出了我想要的答案: ask turtles[ let tempcol [color] of self show count (turtles-on neighbors4) with [color = tempcol]] ask turtles[ set nextcolor [color] of self let tempcol [color] of self show count (tur
ask turtles[
let tempcol [color] of self
show count (turtles-on neighbors4) with [color = tempcol]]
ask turtles[
set nextcolor [color] of self
let tempcol [color] of self
show count (turtles-on neighbors4) with [color = [color] of self]]
您是对的,问题在于该原语的
self
-的使用:
“自我”很简单;它的意思是“我”。“我自己”的意思是“询问的代理人”
让我做我现在正在做的事
简而言之,在第二个例子中,你需要我自己
。目前,你的第二个例子是这样说的,“海龟,显示颜色是自己颜色的邻居海龟的数量”,你真正想说的是“海龟,显示颜色是自己颜色的邻居海龟的数量”。“有关可能更清晰的示例,请查看此设置:
to setup
ca
crt 10 [
set color red
setxy random-xcor random-ycor
]
ask n-of 3 turtles [
set color blue
]
reset-ticks
end
这创造了7只红海龟和3只蓝海龟。现在,如果你让其中一只蓝海龟显示与自身颜色相同的海龟数量,我们应该期望它返回值3。但是,如果使用self
运行该代码,则返回的值为10-因为所有的海龟的颜色都与它们自己的颜色相同:
to self-compare
ask one-of turtles with [ color = blue ] [
print "'[color] of self' example:"
show count turtles with [ color = [color] of self ]
]
end
如果您运行完全相同的代码,但使用我自己
,它将返回我们期望的答案:
to myself-compare
ask one-of turtles with [ color = blue ] [
print "'[color] of myself' example:"
show count turtles with [ color = [color] of myself ]
]
end
我还想指出的是,几乎你所有的
自我
语句都是多余的,你应该能够把它们全部去掉(除了[color=[color]of self]
之外,你无论如何都会改成我自己
的语句)并让您的代码像以前一样运行。您是对的,问题在于如何使用该原语的self
:
“自我”很简单;它的意思是“我”。“我自己”的意思是“询问的代理人”
让我做我现在正在做的事
简而言之,在第二个例子中,你需要我自己
。目前,你的第二个例子是这样说的,“海龟,显示颜色是自己颜色的邻居海龟的数量”,你真正想说的是“海龟,显示颜色是自己颜色的邻居海龟的数量”。“有关可能更清晰的示例,请查看此设置:
to setup
ca
crt 10 [
set color red
setxy random-xcor random-ycor
]
ask n-of 3 turtles [
set color blue
]
reset-ticks
end
这创造了7只红海龟和3只蓝海龟。现在,如果你让其中一只蓝海龟显示与自身颜色相同的海龟数量,我们应该期望它返回值3。但是,如果使用self
运行该代码,则返回的值为10-因为所有的海龟的颜色都与它们自己的颜色相同:
to self-compare
ask one-of turtles with [ color = blue ] [
print "'[color] of self' example:"
show count turtles with [ color = [color] of self ]
]
end
如果您运行完全相同的代码,但使用我自己
,它将返回我们期望的答案:
to myself-compare
ask one-of turtles with [ color = blue ] [
print "'[color] of myself' example:"
show count turtles with [ color = [color] of myself ]
]
end
我还想指出的是,几乎你所有的
自我
语句都是多余的,你应该能够把它们全部去掉(除了[color=[color]of self]
之外,你无论如何都会改成我自己
的语句)然后像以前一样运行代码。第二行中的错误是添加了“of self”,但我原以为这是不会改变任何内容的冗余代码。第二行中的错误是添加了“of self”,但我原以为这是不会改变任何内容的冗余代码。