将列表的元素作为参数传递给NetLogo中的报告函数
问题描述:
我试图将列表作为参数集传递给报告函数。下面是一个简单的例子。将列表的元素作为参数传递给NetLogo中的报告函数
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扩展来更轻松地处理嵌套列表吗?
答
更改add
功能
to-report add [lst]
report reduce + lst
end
答
更换
map add arg1
与
map [add first ? last ?] arg1
如果你需要一个更通用的解决方案,请参阅https://github.com/NetLogo/NetLogo/issues/539布赖恩头的listify-task
程序。
我提供的代码只是我正在处理的任务的一个简单示例。所以我实际上并没有使用add函数。我试图传递一个列表元素的函数实际上比这里的'add'函数复杂得多。 – user3887089