给定一个返回数组的方法,另一个接受任意数量的参数,有没有办法用数组的每个元素作为参数调用第二个方法?
例如:
def arr
["a", "b", "c"]
end
def bar(*args)
args.each {|a| puts a}
end
我想打电话
bar "a", "b" , "c"
当然这是一个简化的例子,实际上arr可以返回任意大小的数组(比如说它是一个ActiveRecord查找,我想将所有结果传递给bar),因此我的问题。
答案 0 :(得分:8)
你可以这样做:
my_array = ['a', 'b', 'c']
bar(*my_array)
这会将数组展平为单个元素,并将它们作为单独的参数传递给方法。您可以对任何类型的方法执行此操作,而不仅仅是接受* args。
所以在你的情况下:
bar *arr
答案 1 :(得分:1)
当您将数组作为参数时,也使用*
:
bar(*arr)