セーフナビゲーション演算子
メソッド呼び出しで .
の代わりに &.
を使うと、レシーバが nil
の場合に安全にメソッド呼び出しを省略できる。「&.
」の形状が、膝を抱えて寂しそうに座り込む人の姿に似ているため、通称で「ぼっち演算子」と呼ばれることがある。
公式サイト:
&. – メソッド呼び出し | Ruby リファレンスマニュアル [公式]
使い方
メソッド呼び出しで .
の代わりに &.
を使うと、レシーバが nil
の場合に安全にメソッド呼び出しを省略できる。
nil&.will_not_call_method
Code 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
||=
&.
try
respond_to?
compact
- 三項演算子 (
... ? ... : ...
)
参考:
Ruby / Rails の存在確認イディオムまとめ – Qiita