s = Proc.new {|x|x*2}
def one_arg(x)
puts yield(x)
end
one_arg(5, &s)
one_arg
怎麼知道&s
?如何將兩個參數傳遞給具有單參數簽名的方法?
s = Proc.new {|x|x*2}
def one_arg(x)
puts yield(x)
end
one_arg(5, &s)
one_arg
怎麼知道&s
?如何將兩個參數傳遞給具有單參數簽名的方法?
&
運算符將Proc變成一個塊,因此它變成帶有塊的一個參數方法(用yield
調用)。如果您忘記了&
以便它直接通過Proc,您將會收到錯誤。
通過執行&s
,您告訴one_arg
您希望您的Proc s
作爲一個塊通過(請糾正我,如果我錯了)。等效寫作是
one_arg(5) do |x|
x *2
end
已經有上SO過幾個問題在這裏爲晚與此處理。 August Lilleaas對於所有這些Ruby瘋狂的一些錯綜複雜有一個很不錯的write up。