Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么netlogo对邻居的海龟计数不同?_Netlogo - Fatal编程技术网

为什么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”,但我原以为这是不会改变任何内容的冗余代码。