我试图将两个数组的每个位置区别开来并将它们放在第三个数组中:
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。
答案 0 :(得分:4)
从技术上讲,您可以让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 )