2010-09-15 75 views
3

在Ruby中,我有類似以下星號塊參數列表

foo { |x, y| puts y } 

代碼,因爲編譯器/解釋器不斷警告我網站未使用VAR X,我換成X用「*」和編譯器停止抱怨。 (我不知道爲什麼我決定*是最好的選擇......只是發生了......)

foo { |*, y| puts y } 

這是幹什麼的?有沒有副作用?

回答

4

在此上下文中的星號稱爲「splat」運算符。這意味着您可以在它的位置傳遞多個參數,並且該塊會將它們看作一個數組。

雖然(例如foo { |*x, y| puts y }),但我不確定它如何或爲什麼在它後面沒有變量名稱的情況下工作。我猜想這意味着該塊將忽略除最後一個參數外的所有參數,並將其打印出來。