2011-03-09 60 views
2

給定一個方法返回一個數組,另一個接受任意數量的參數,有沒有辦法用數組中的每個元素作爲參數調用第二個方法?在Ruby中,我可以將數組的每個元素單獨傳遞給接受* args的方法嗎?

例如:

def arr 
    ["a", "b", "c"] 
end 

def bar(*args) 
    args.each {|a| puts a} 
end 

我想打電話給

bar "a", "b" , "c" 

當然,這是一個簡單的例子,在現實中ARR可以返回任意大小的數組(比方說,如果它是一個ActiveRecord找到,我想通過所有的結果),因此我的問題。

回答

7

你可以這樣做:

my_array = ['a', 'b', 'c'] 
bar(*my_array) 

這將拉平的陣列到它的各個元素,並將它們傳遞給方法作爲獨立參數。你可以對任何一種方法做到這一點,而不僅僅是那些接受*參數的方法。

所以你的情況:

bar *arr 
+0

偉大的作品,它是很好的瞭解,它具有更廣闊的應用 - 感謝! – 2011-03-09 23:52:58

1

使用*還當你給一個數組作爲參數:

bar(*arr) 
相關問題