上記の記事は最初「引数のあたまに&をつけて呼び出せるのはProcとMethod」という題名書きましたところ…kuttya様から以下のようなコメントを頂きました。
kuttya
ダックタイピング的に言えばto_proc持ってればなんでもいいって話だ
早速るりまサーチで調べたところ...to_procを持っているのは
- Symbol#to_proc -> Proc
- Method#to_proc -> Proc
- Proc#to_proc -> self
との事。*1
他のオブジェクトもto_procを実装してあげれば動きます。
class String def to_proc Proc.new { 42 } end end (1..5).map &"answer" #=> [42, 42, 42, 42, 42] (1..5).map &"" #=> [42, 42, 42, 42, 42]
*1:Object#to_procは仮に書いてあるもので実体がないため除外します