我试图将两个数组的每个位置的差异放入第三个数组中:
let list1 [ 3 4 5 ]
let list2 [ 6 7 8 ]
let list3 [ ]
( foreach list1 list2 [
[ a b ] -> lput ( a - b ) list3
] )
理想情况下,我list3
之后会[ -3 -3 -3 ]
。
当我尝试运行它时,出现此错误:
FOREACH expected this input to be an anonymous command, but got an anonymous reporter instead
我做错了什么?我尝试在函数周围加上括号,但我对NetLogo很陌生。
注意:我使用的是NetLogo 6.0.1。
从技术上讲,你可以让你的foreach
像这样工作:
let list1 [ 3 4 5 ]
let list2 [ 6 7 8 ]
let list3 [ ]
( foreach list1 list2 [
[ a b ] ->
set list3 lput ( a - b ) list3
] )
但是,在这种情况下,map
可能是更好的基元:
let list1 [ 3 4 5 ]
let list2 [ 6 7 8 ]
let list3 ( map [ [ a b ] -> a - b ] list1 list2 )
print list3
编辑可见性:
Nicolas Payette在下面的评论中指出,map
原语更简洁的语法是:
let list3 ( map - list1 list2 )