将列表的元素作为参数传递给NetLogo中的to-report函数

时间:2015-10-14 20:25:50

标签: netlogo

我正在尝试将列表作为参数集传递给to-report函数。下面是一个简单的例子。

Globals 
[a
list_of_list]

to setup   
ca
set list_of_list (list (list 1 2) (list 3 4)) 
end

to go
set a function list_of_list
end

to-report function [arg1]
report (map add arg1) 
end 

to-report add [arg1 arg2]
report arg1 + arg2
end

但是我收到以下错误。

task expected 2 inputs, but only got 1 error while observer running MAP called by procedure F called by procedure SETUP called by Command Center

我希望在将列表元素作为函数参数传递后得到的答案是[3 7]。

我正在处理的真正任务是使用更深层次的嵌套列表复杂得多,但是这段代码给出了我想要做的事情的想法。我应该考虑使用Matrix扩展来更轻松地处理嵌套列表吗?

2 个答案:

答案 0 :(得分:0)

add功能更改为

to-report add [lst]
report reduce + lst
end

答案 1 :(得分:0)

替换

map add arg1

map [add first ? last ?] arg1

如果您需要更通用的解决方案,请参阅https://github.com/NetLogo/NetLogo/issues/539处的Bryan Head的listify-task程序。