Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

引数のあたまに&をつけると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は仮に書いてあるもので実体がないため除外します