s = Proc.new {|x|x*2}
def one_arg(x)
puts yield(x)
end
one_arg(5, &s)
one_arg
如何了解&s
?
答案 0 :(得分:3)
&
运算符将Proc转换为块,因此它成为带有块的单参数方法(使用yield
调用)。如果您已经离开&
以便它直接通过了Proc,那么您将会遇到错误。
答案 1 :(得分:3)
通过执行&s
,您告诉one_arg
您希望将Proc s
作为一个块传递(如果我错了,请纠正我)。等效的写作将是
one_arg(5) do |x|
x *2
end
关于这个问题,最近有一些关于SO的问题。 August Lilleaas对于所有这些Ruby疯狂的复杂性有一个非常好的write up。