便利なnilガード


Rubyでは、変数がnilのレシーバに対して、何かのメソッドを実行しようとすると

undefined method `メソッド名' for nil:NilClass

のようなnilExceptionが発生してしまいます。
しかし、Rubyにはあらかじめnilが代入されないように、nilが入力されるとデフォルトで
決められた値が代入されるような演算子が存在します。

1. 条件1 || 条件2

条件1を評価してnilかfalseの場合に条件2を実行するという演算子です。
使い方として以下の用途で使用されます。

例: name = str || "Ruby"

  • strにnilまたはfalseが入力されている場合は、文字列"Ruby"がnameに代入される また、似たような演算子に以下が存在します。

2. 条件1 ||= 条件2

これも、1.のような使い方で使用される。

例: name ||= "Ruby"

  • nameにnilまたはfalseが入力されている場合は、文字列"Ruby"がnameに代入される

3. 条件1 && 条件2

条件1を評価して真の場合に条件2を実行するという演算子です。
使い方として以下の用途で使用されます。

例: item = ary && ary.first

変数aryがnilの場合、ary.firstというメソッド呼び出しを行うとエラーになってしまいます。
この例では、aryがnilでないことを確認してから、firstメソッドを呼んで処理を実行しています。

また、似たような演算子に以下が存在します。

4. レシーバ&.メソッド

レシーバがnilでないときだけメソッドを実行します

例:item = ary&.first

  • aryがnilでない場合にfirstメソッドを実行する

オススメの記事

Rails Fat Model, Skinny Controllerという考え方 React アロー関数の書き方
Ruby Procとlambda式 React 引数の渡し方
Ruby Rubyパッケージマネージャのrbenvを導入しよう Ruby 繰り返し構文
Swift オプショナルバリューがnilの時に代わる値の指定 BLOG 動画と教本どちらが良いのか?!
次の記事 >> ハッシュ型と配列型の複合
Rubyの記事一覧へ戻る