Rubyの「respond_to」メソッド

Rubyの「respond_to」メソッド

みなさんこんにちは、新人の意識高丸です。
先日も初心者向けRuby勉強会「gaienrb #24」に参加してきました。

今回はメソッドを一つ調べてみました。
「to_proc」というメソッドです。
名前からするとprocに変換するメソッドに見えるのですが、そのとおりでした。

to_procはメソッドの引数の最後に&を付けて渡した場合に暗黙的に呼ばれるようです。
Rubyでは、ブロックを引数で渡す場合に&を付けるのですが、その際に渡したものがブロックオブジェクトではなく、to_procが定義されているオブジェクトの場合はto_procで暗黙的にProcへの変換が行われて引数が渡されます。

そして、Symbolのto_procは、自身と同名のメソッドを使う手続きオブジェクトを生成するため、それを応用すると以下のように書くことができます。

“`1から10までinjectで足す場合
2.0.0-p247 :021 > (1..10).inject(&:+)
=> 55
“`

“`ブロックを渡して足した場合
2.0.0-p247 :024 > (1..10).inject{|sum,n|sum+n}
=> 55
“`

もう一つ例を書いてみます

“`文字列の配列を数値に変換
2.0.0-p247 :036 > [“1″,”2″,”3″,”4″,”5”].map(&:to_i)
=> [1, 2, 3, 4, 5]
“`

“`ブロックを渡して変換した場合
2.0.0-p247 :037 > [“1″,”2″,”3″,”4″,”5”].map{|x| x.to_i}
=> [1, 2, 3, 4, 5]
“`

これはコードが短く書けて良いと思いました。

TAG

  • このエントリーをはてなブックマークに追加
意識 高丸
エンジニア 意識 高丸 takamaru

Rubyについて日々勉強している新人エンジニアです。初心者向けRuby勉強会のレポートなどを投稿していきます。