セーフナビゲーション演算子

メソッド呼び出しで . の代わりに &. を使うと、レシーバが nil の場合に安全にメソッド呼び出しを省略できる。「&.」の形状が、膝を抱えて寂しそうに座り込む人の姿に似ているため、通称で「ぼっち演算子」と呼ばれることがある。

公式サイト:

&. – メソッド呼び出し | Ruby リファレンスマニュアル [公式]

使い方

メソッド呼び出しで . の代わりに &. を使うと、レシーバが nil の場合に安全にメソッド呼び出しを省略できる。

nil&.will_not_call_methodCode language: Ruby (ruby)

&. によりメソッドを呼び出すと、レシーバが nil の場合にメソッドは呼び出されず、次のような動作となる。

  • 引数は評価されない。
  • メソッドは呼び出されない。
  • nil を返す。

参考:

ぼっち演算子の使い方 – Qiita

ぼっち演算子について – Qiita

ぼっち演算子とは | matsu18

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

Ruby に存在演算子は存在するの? | hp12c

Ruby で変数が定義されているか確認する | ぺけみさお

defined? – 変数が定義されてるかどうかを調べる | yucken の業務上電脳 Tips

How to Check If a Variable is Defined in Ruby | RubyGuides

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA