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疯狂的一些错综复杂的内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top