Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

引数のあたまに&をつけるとto_procメソッドが呼び出される(その2)


上記の記事は最初「引数のあたまに&をつけて呼び出せるのはProcとMethod」という題名書きましたところ…kuttya様から以下のようなコメントを頂きました。

kuttya
ダックタイピング的に言えばto_proc持ってればなんでもいいって話だ

早速るりまサーチで調べたところ...to_procを持っているのは

  1. Symbol#to_proc -> Proc
  2. Method#to_proc -> Proc
  3. 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は仮に書いてあるもので実体がないため除外します