やったこと
&. を利用して nil のチェックをしてみます。
確認環境
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
調査
$ rails c
irb(main):001:0> foo = 13
=> 13
irb(main):002:0> foo&.to_s
=> "13"
irb(main):003:0> nil&.to_s
=> nil
irb(main):004:0> nil.to_s
=> ""
irb(main):005:0> nil.hoge
Traceback (most recent call last):
2: from (irb):5
1: from (irb):5:in `rescue in irb_binding'
NoMethodError (undefined method `hoge' for nil:NilClass)
irb(main):006:0> nil&.hoge
=> nil
&. について
メソッド呼び出しで
.' の代わりに
&.’ を使うことができます。 この形式でメソッドを呼びだそうとすると、レシーバが nil の場合は 以下のように働きます。 - 引数の評価が行なわれない - メソッド呼び出しが行われない - nil を返すsafe navigation operator(通称「ぼっち演算子」)