我有这个代码,我不清楚它在做什么:
patches-own [ field ]
let a max-one-of patches in-radius b [field]
ifelse ([field] of a > 0.1) and ([field] of a < 0.5)
[
;; do something
]
[
;; do something else
]
谢谢,
马可
答案 0 :(得分:0)
这显然是由乌龟或补丁运行的代码,不明显是哪个。
patches in-radius b
是调用代理周围的修补程序圈的代理集,半径为b
。 max-one-of ... [field]
在该代理集中找到具有field
最大值的补丁。然后该补丁存储在新的局部变量a
中。 (比a
更好的名称可能是winner
或peak
或best-patch
。)
[field] of a
是field
的最大值,与max-one-of
找到的值相同。 ifelse
检查该值是否在某个范围内,并执行不同的操作,具体取决于。
ifelse
中的代码是否进一步使用a
?如果是的话,很酷。如果没有,那么代码可以更简单,更简单地写成:
let m max [field] of patches in-radius b
ifelse m > 0.1 and m < 0.5
[
;; do something
]
[
;; do something else
]
或许以这种形式看待它将有助于明确其含义。