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 をブロックに変換するため、ブロックを持つ 1 つの引数のメソッドになります (これは で呼び出されyieldます)。を&省略して Proc を直接渡すと、エラーが発生します。
を実行することで、Proc をブロックとして渡したいということになります&s(間違っていたら訂正してください)。同等の記述は次のようになりますone_args
one_arg(5) do |x|
x *2
end
これに対処する最近の SO に関するいくつかの質問がありました。August Lilleaasは、この Ruby の狂気すべての複雑さのいくつかについて、非常に素晴らしい記事を書いています。