当我运行以下两行时,我会得到不同的答案。有人知道为什么吗?第一个给出了我想要的答案:
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]]
答案 0 :(得分:2)
你是对的,问题是使用self
- 来自dictionary entry的原语:
"自"很简单;这意味着"我"。 "自己"意味着"要求的代理人 我要做我现在正在做的事。
简而言之,您希望在第二个示例中使用myself
。目前,你的第二个例子就是说," turtles,显示邻居龟的数量,其颜色是自己的颜色"在那里你真的想说"海龟,显示颜色是我自己的颜色的邻居海龟的数量。"有关可能更清晰的示例,请查看此设置:
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
如果您使用完全相同的代码但使用myself
,则会返回我们期望的答案:
to myself-compare
ask one-of turtles with [ color = blue ] [
print "'[color] of myself' example:"
show count turtles with [ color = [color] of myself ]
]
end
我还要指出,几乎所有of self
语句都是多余的 - 您应该能够将它们全部删除([color = [color] of self]]
除外,您将更改为myself
无论如何,请让你的代码像以前一样运行。