Ruby でたまに見かける &. というメソッドについて
&. ってなに?
一般的に「ぼっち演算子」と呼ばれています。
Ruby 2.3 で追加されたメソッドです。
どう使うの?
レシーバ + &. + 呼び出したいメソッド という形で使います。
以下の例では "hoge" という文字列をレシーバとし、
呼び出したいメソッドは upcase (小文字を大文字に変換) とします。
irb(main):001:0> "hoge"&.upcase
=> "HOGE"
どういう時に使えるの?
レシーバが nil の可能性があるような場合、かつレシーバが nil なら nil を返してほしい時に使えます。
普通、レシーバが持っていないメソッドを使おうとすると NoMethodError が発生します。
例えば数字 (Integer) に対して upcase メソッドを使ってみましょう。
upcase メソッドは String 型に対して使うものであるため NoMethodError が発生します。
irb(main):002:0> 1.upcase
...
NoMethodError (undefined method `upcase' for 1:Integer)
nil がレシーバの時も同様です。
irb(main):003:0> nil.upcase
...
NoMethodError (undefined method `upcase' for nil:NilClass)
一方、レシーバが nil の時に &. を使ってメソッドを呼び出すと NoMethodError を発生させず、ただ nil が返ってきます。
irb(main):004:0> nil&.upcase
=> nil
注意点
レシーバが nil ではない時は NoMethodError が発生するので注意しましょう。
irb(main):006:0> 1&.upcase
...
NoMethodError (undefined method `upcase' for 1:Integer)