如何将两个参数传递给具有单参数签名的方法?
-
07-07-2019 - |
题
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疯狂的一些错综复杂的内容。
不隶属于 StackOverflow