セーフナビゲーション演算子
メソッド呼び出しで . の代わりに &. を使うと、レシーバが nil の場合に安全にメソッド呼び出しを省略できる。「&.」の形状が、膝を抱えて寂しそうに座り込む人の姿に似ているため、通称で「ぼっち演算子」と呼ばれることがある。
公式サイト:
&. – メソッド呼び出し | Ruby リファレンスマニュアル [公式]
使い方
メソッド呼び出しで . の代わりに &. を使うと、レシーバが nil の場合に安全にメソッド呼び出しを省略できる。
nil&.will_not_call_methodCode language: Ruby (ruby)
&. によりメソッドを呼び出すと、レシーバが nil の場合にメソッドは呼び出されず、次のような動作となる。
- 引数は評価されない。
- メソッドは呼び出されない。
nilを返す。
参考:
Ruby 2.3 の Safe Navigation Operator – Qiita
Safe Navigation Operator で呼ばれるメソッドの引数はレシーバが nil なら評価されない – Qiita
ぼっち演算子「&.」の落とし穴 翻訳 | TechRacho
&. – メソッド呼び出し | Ruby リファレンスマニュアル [公式]
try と &. の違い
参考:
Ruby の &. と #try の違い | Secret Garden (Instrumental)
What is the difference between `try` and `&.` (safe navigation operator) – Stack Overflow
変数/定数の存在や値が定義されているかを判定する
defined?const_defined?nil?empty?blank?present?presence||=&.tryrespond_to?compact- 三項演算子 (
... ? ... : ...)
参考:
Ruby / Rails の存在確認イディオムまとめ – Qiita