我正在学习NetLogo,我对语法感到困惑。 例如,如果我为一个补丁创建了朋友,并且我想以补丁之一计数/访问他们的邻居及其朋友的邻居,那么一般的方法是什么? 例如,此行有效:
set sum-num sum [number] of neighbors + sum [ [number] of neighbors ] of friend
但这不是,为什么?
set sum-num count neighbors with [number = 1] + (count [neighbors with [sum-num = 1]] of friend)
在我的测试示例中,这两行应给出相同的结果。
示例的测试代码,以便于理解:
patches-own [friend number sum-num]
to setup
ca
ask one-of patches [
set friend one-of patches
set pcolor green
ask friend [set pcolor red]
]
ask patches [
set number random 2
set plabel number
]
end
to go
ask patches with [pcolor = green][
;set sum-num sum [number] of neighbors + sum [ [number] of neighbors ] of friend
set sum-num count neighbors with [number = 1] + (count [neighbors with [sum-num = 1]] of friend)
set plabel sum-num
]
end
如果有人可以使我指向某些文章/文档的一部分(我显然看不到)或解释如何访问随机代理/代理集的一般方法,我将不胜感激。的情况。对我来说很明显,我错过了一些东西。
我知道如何访问ask
,但是在这种情况下,问问不是一个选择。
答案 0 :(得分:1)
在第二个示例中,我认为您只需要括号即可。它首先分配sum-num,然后加上等式的后半部分。
答案 1 :(得分:1)
代替写作:
count [neighbors with [sum-num = 1]] of friend
并且想知道NetLogo是否会按照您想要的方式解析它(或者是否需要添加括号),我建议编写:
[count neighbors with [sum-num = 1]] of friend
消除任何可能的歧义。