NetLogo 传递 link 品种作为过程参数

NetLogo passing link breed as procedure parameter

我正在编写一个实用程序,用于识别某个 turtle-set 中所有节点的所有新 link-neighbors。我希望能够对任何 link 品种使用相同的程序。该函数看起来像这样(未测试)。

to-report all-neighbours [ NODESET EDGETYPE ]
  let nbr nobody 
  ask NODESET [ set nbr (turtle-set nbr EDGETYPE-neighbors) ]
  report nbr with [ not member? self NODESET ]
end

这将使语法检查器失败,因为 EDGETYPE-neighbors 不是 breed-neighbors 的有效版本。有没有办法将 link 品种传递给被调用的过程?

我想我可以通过 nw:set-context NODESET EDGETYPEnw:turtles-in-radius 1 使用网络扩展来解决问题,但我想要一个更好的方法并且可能需要为 [=22= 做同样的一般事情] 没有 nw 版本的程序。

获取指定品种的所有链接并使用[other-end]获取海龟:

to-report all-neighbours [ NODESET EDGETYPE ]
  let nbr nobody 
  ask NODESET [set nbr (turtle-set nbr [other-end] of (my-links with [breed = EDGETYPE]))]
  report nbr with [ not member? self NODESET ]
end

用法(如果您的品种是 relations/relation):

ask all-neighbours (turtle-set turtle 0) relations [show self]