Object#method はメソッドをオブジェクト化してくれるのですよね。だから、こんな奇妙なブロックなしの世界が…。
[1] pry(main)> putout = method(:p) => #<Method: Object(Kernel)#p> [2] pry(main)> a = [1, 5, 4, -2, 10, 3] => [1, 5, 4, -2, 10, 3] [3] pry(main)> a.each(&putout) 1 5 4 -2 10 3 => [1, 5, 4, -2, 10, 3] [4] pry(main)> a.each_cons(2, &putout) [1, 5] [5, 4] [4, -2] [-2, 10] [10, 3] => nil
Kernel.#p もこうしてブロックなしで使えてしまう…。