tawara's blog

雑記。個人の見解です。

nilガード

book || = Book.first

上記のコードの || = が nilガードと呼ばれるイディオムだ。よく見るし、体で覚えてしまっているけれど、もう一度頭で理解しておく。

これは省略せずに書くと、こうなる。

book || book = Book.first

book変数にnil / false以外が格納されていれば、そこで式が評価されて、book変数の値を返す。もし、book変数がnil / falseの場合は、book = Book.firstが実行される。なので、こうしておけば、book変数がないときのデフォルト値を設定することができる。便利だ。変数がnil or falseならデフォルト値を右側で用意している、と考えれば良い。

(了)