ぼっち演算子の使い方をすっかり忘れていたのでまとめておきます。
結論
ぼっち演算子&.
とはレシーバーがnil
だった場合にNoMethodError
ではなくnil
を返すRubyのメソッド呼び出しの演算子です。
メソッド呼び出しで
.
の代わりに&.
を使うことができます。この形式でメソッドを呼びだそうとすると、レシーバが nil の場合は以下のように働きます。
・ 引数の評価が行なわれない
・メソッド呼び出しが行われない
・nil を返す
レシーバが nil でない場合は通常のメソッド呼び出しが行われます。
メソッド呼び出し(super・ブロック付き・yield) (Ruby 3.2 リファレンスマニュアル)
nil
の可能性のあるオブジェクトのメソッド呼び出しでNoMethodError
を出させたくない場面で活躍しそうです。
使い方
使い方はメソッド呼び出しの.
の代わりに&.
を使うだけです。
例) 本の名前を出力をするname
メソッドを呼び出す
> book = nil # .で呼び出す > book.name => `<main>': undefined method `name' for nil:NilClass (NoMethodError) # &.で呼び出す > book&.name => nil
ぼっち演算子&.
でnil
をレシーバとしてメソッド呼び出しを行った場合は返り値がNoMethodError
ではなくnil
になっているのが分かると思います。
Railsのtryメソッドより高速らしい
Rubyのぼっち演算子&.
と同じ動作をするメソッドとしてRailsのtry
メソッドがあります。
処理速度はRubyのぼっち演算子&.
の方が高速らしいです。
Rubyのぼっち演算子はRailsの`Object#try`より高速(翻訳)|TechRacho by BPS株式会社
感想
久しぶりにRubyに触れた気がした。 ガンガン使って体で覚えていこう。
参照
【Rails】エラーハンドリングに役立つぼっち演算子(.&)とtry(try!)メソッドについて|TechTechMedia