将 NL-5 中的匿名记者转换为 NL6

Converting an anonymous reporter in NL-5 to NL6

我是 NetLogo 的新手,正在尝试在 v6 上使用为 v5 编写的模型,遇到了一些转换挑战。

通过阅读文档,替换 ?使用匿名函数似乎很容易理解,但是我看到的大多数示例似乎都集中在 foreach 循环上,而没有充分提及排序方式。当我应用我认为应该起作用的转换时,我遇到了一个错误,表明需要一个文字。

我对这两个循环特别有挑战

#loop-1
foreach sort-by [[who] of ?1 < [who] of ?2] aset[ ]

#loop-2
foreach sort-by [ ?1 < ?2 ] bset [  ]

如果我按如下方式重写两者,我会收到一个错误,提示应为文字

#loop-1
foreach sort-by [[?1 ?2] -> [[who] of ?1 > [who] of ?2]] aset [ ]

#loop-2
foreach sort-by [[?1 ?2] -> [ ?1 < ?2 ]] bset [  ]

如有任何建议,我们将不胜感激。

我想我现在明白了。这些工作......我需要摆脱'?'

#loop-1
foreach sort-by [[a b] -> [[who] of a > [who] of b]] aset [ ]

#loop-2
foreach sort-by [[x y] ->  x < y ] bset [  ]

我不知道所有的上下文(循环的目的是什么?)。 我想,他们应该按 who 编号对海龟进行排序。

您不必(但可以)去掉“?”。错误来自于在 ->.

之后的括号中编写代码

如果有其他上下文,foreach 可能会有用,但据我了解其用途,可以将其删除。

这有效:

to go
  crt 5
  let aset turtles with [who <= 3]
  let bset turtles with [who >= 3]
  ;loop-1
  show sort-by [[?1 ?2] -> ?1 > ?2] aset
  ;loop-2
  show sort-by [[?1 ?2] ->  ?1 < ?2 ] bset
end