2013-04-09 61 views
1

說我有一個需要三個參數的方法的方式來輸入多個參數到一個方法:是否有通過陣列

[a, b, c] 

def foo(a, b, c) 
end 

而且我說在一個陣列參數是否有使用數組作爲參數,等等的瑣碎或一個方法方式:

foo(array.some_method) 

回答

5

可以使用splat operator

foo(*array) 
+0

splat操作符是否必須在方法的定義?我試圖使用庫類方法,所以我不能改變方法的簽名。 – 2013-04-09 16:38:12

+0

不,這是'爆炸'數組以匹配現有方法簽名的一種方式,所以在您的示例中,您可以在不改變'foo'方法的情況下使用它 – pjam 2013-04-09 16:38:58

+0

您是對的。儘管代碼導致了相當的功能:'Date.valid_date?(*'9666-96-96'.split(' - ')。map(&:to_i))'。我可能應該分成兩步。 – 2013-04-09 16:50:10

4
def foo(*bar) 

end 

美孚現在苛求的陣列作爲參數。你也可以讓它接受一個散列做

def foo(bar={}) 

end