Safe Navigation Operator &.
&.
という演算子を使用してメソッドを呼び出すと、レシーバーがnilだった場合でもエラーが発生しなくなります。
class Hoge
def hoge
"hoge"
end
end
> hoge = Hoge.new
=> #<Hoge:0x000000010e850c78>
> hoge.hoge
=> "hoge"
> fuga = nil
=> nil
> fuga.hoge
NoMethodError (undefined method 'hoge' for nil:NilClass)
irb(main):010:0> fuga&.hoge
=> nil
if文や条件分岐の書き換え
- if
hoge = if fuga
fuga.hoge
else
nil
end
=> nil
- 三項演算子
hoge = fuga ? fuga.hoge : nil
=> nil
- Safe Navigation Operator
hoge = fuga&.hoge
=> nil
参考