MENU
カテゴリー

【Ruby】ボッチ演算子の挙動について

  • URLをコピーしました!
目次

はじめに

ボッチ演算子って名前がおもしろいし好きなので書きます。

ボッチ演算子とは

オブジェクトがnilの場合でもエラーを発生させずに処理を続行させることができるもの。

あわせて読みたい
NEWS for Ruby 2.3.0 (Ruby 3.3 リファレンスマニュアル) このドキュメントは前回リリース以降のバグ修正を除くユーザーに影響のある機能の変更のリストです。

(あんまり参考にならないが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を許容しているカラムに対する処理などを書く時に使える。

がんばろう。

よかったらシェアしてね!
  • URLをコピーしました!
目次