はじめに
ボッチ演算子って名前がおもしろいし好きなので書きます。
ボッチ演算子とは
オブジェクトがnilの場合でもエラーを発生させずに処理を続行させることができるもの。
(あんまり参考にならないがRubyリファレンス)
ボッチ演算子の挙動
例えば、upcaseというメソッドを使用すると下のような挙動になる。
irb(main):006> gorira = "hage"
=> "hage"
irb(main):007> gorira.upcase
=> "HAGE"
じゃあ、このgoriraというオブジェクトの中身が空(Rubyの場合、nil)の場合はどうだろうか。
irb(main):014> gorira = nil
=> nil
irb(main):015> gorira.upcase
Traceback (most recent call last):
3: from /Users/masahito/.rbenv/versions/2.7.2/bin/irb:23:in `<main>'
2: from /Users/masahito/.rbenv/versions/2.7.2/bin/irb:23:in `load'
1: from /Users/masahito/.rbenv/versions/2.7.2/lib/ruby/gems/2.7.0/gems/irb-1.14.1/exe/irb:9:in `<top (required)>'
(irb):15:in `<main>': undefined method `upcase' for nil:NilClass (NoMethodError)
Did you mean? case
NoMethodErrorとなり処理が終わる。
じゃあこれらの挙動をボッチ演算子にして確認してみる。
irb(main):017> gorira = "hage"
=> "hage"
irb(main):018> gorira&.upcase
=> "HAGE"
まぁ、これはふつうにボッチ演算子を使用していないときと挙動は変わらない。
じゃあ中身が空の場合。
irb(main):019> gorira = nil
=> nil
irb(main):020> gorira&.upcase
=> nil
今度はエラーとならずにnilを返してくれた。
最後に
nilを許容しているカラムに対する処理などを書く時に使える。
がんばろう。