Object#method の奇妙なること(Ruby)

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 もこうしてブロックなしで使えてしまう…。

Rubyトリビアでした。