为什么我在这里得到预期的 true/false 而不是列表或块?

Why am i getting the expected a true/false here rather than an a list or block here?

   I have the code:

 if [pcolor] of patch-here = grey and  [pcolor] n-of 2 neighbors4 =       grey   [set  X X + 1 set  agentset-number = N] 

这似乎事先没有产生任何错误,我很好奇这段代码中有什么不正确的地方以及如何纠正它。

你的代码中的问题是这个表达式(你一定已经更改了它,因为它无法编译):

[pcolor] n-of 2 neighbors4 = grey

n-of 2 neighbors4 returns 是一个代理集,由四个邻居的两个随机选择的补丁组成。为了得到它的颜色列表,你需要使用of,所以把它改成:

[pcolor] of n-of 2 neighbors4 = grey

但是,该代理集的 [pcolor] return 是一个颜色列表;两个随机选择的邻居中的每一个。所以这里是将颜色列表与颜色(实际上只是一个数字)进行比较。那将永远 return false.

你可能想要这样的东西:

count neighbors4 with [pcolor = grey] = 2

已编辑:谜团解开了。