对 "other" 在 NetLogo 中的工作方式感到困惑

Confused about how "other" works in NetLogo

netlogo 文档给出了以下示例

show count turtles-here
=> 10
show count other turtles-here
=> 9

并且文档说 "other" 命令不包括 "this" 代理。我的问题是......哪个代理人?似乎此命令在观察者上下文中可以是 运行,因此没有代理。或者至少在这个例子中,上下文可以是一个补丁上下文,在这种情况下 "other" 会排除所有的海龟?是否有某种机制可以为特定代理设置上下文?也许:

ask agent [
   show count other turtles-here
]

在这种情况下,为什么 NetLogo 代码片段不包含它?

排除的代理是被询问的代理。 askask-concurrentof 设置上下文。例如,

ask turtle 0 [ show count other turtles ]

计算除turtle 0以外的所有海龟。

ask turtles [ show count other turtles ]

分别遍历每只海龟。在每次迭代中,other 排除当前海龟。

other 从不排除不同类型的代理。也就是说,

ask patch 0 0 [ show count other turtles ]

将只计算所有的海龟,因为 none 的海龟是 patch 0 0

当前上下文的代理可以用self引用。 other 排除的代理将始终是 self。因此,

ask agents [ show count other agents ]

完全等同于

ask agents [
  let this-agent self
  show count agents with [ self != this-agent ]
]

(请注意,使用 myself 可以更简洁地表达这一点,但由于 myselfother 更令人困惑,而且命名更糟糕,我在这里避免使用它)

Seems like this command can be run in the observer context and so no agent.

这实际上是一个错误!我在这里为它创建了一个问题:https://github.com/NetLogo/NetLogo/issues/757