アンパサンドとシンボルを使用したこの奇妙な構文の内容&:object_idをメソッド呼び出しの引数として使用すると、シンボル:object_idがSymbol#to_procメソッドを使用してProcインスタンスに変換されます。この構文は、mapやirb(main):001:0> [1、2、3、4、5] .select(&:even?)=> [2、4] irbなどの列挙可能なメソッドと組み合わせると非常に便利です。 (main):002:0> [1、2、3、4、5] .map(&:even?)=> [false、true、false、true、false]:even?.to_procの結果はproc {| x |と非常によく似たprocインスタンスx.even? } 1つの大きな違いがあります。それらは引数を異なる方法で処理します。 procはメソッドほど厳密ではなく、引数を多く与えすぎ、無視し、十分に与えず、不足している値をirb(main):001:0> a_proc = proc {| a、 b、c | pa、b、c} irb(main):002:0> a_proc.cal...