nilガードの書き方と、使用するメリットについて
Rubyでよく出てくるキーワードのひとつ「nilガード」
Railsチュートリアルでも出てくる概念なので、名前は知っているという方も多いと思います。
今日はnilガードの書き方と、使用するメリットについて記事を書いていきます。
上記のような方々にお読みいただけるとうれしいです。
nilガードの説明と書き方
まずnilガードの説明をします。以下のような書き方をします。
number ||= 10 #①
このコードの意味は、「もしもnumberがあればnumberを返す、nilかfalseであれば10を代入した上でnumberを返す」という意味になります。
また、①と②は同じ動きをします。
number || (number = 10) #②
「左辺があれば左辺を返し、なければ右辺を返す」のが、nilガードです。
例えばこんな感じです。
> a ||= 10 #aはnilなので、aに10を代入してaを返します => 10 > a ||= 20 #a = 10なので、そのまま左辺の10を返します。 => 10
nilガードの書き方がわかったでしょうか。
次にnilガードを使用するメリットについて書いていきます。
メリット①nilを返したことで発生するエラーを防げる
たとえば、aを戻り値で返すコードがあるとします。
return a
ここでaがnilであると、「戻り値がnilだから返す値がないよ!」というエラーが出ます。ほかにも、nilを返してはいけないところでnilを返す可能性があると、エラーが出てしまいます。
ここでnilガードを使います。
return a ||= []
aがあればaを返し、aがなければ[ ]を返します。
nilガードは名前の通り「nilをガードする」役割なので、nilを返してはエラーが出てしまう!というときに役立ちます。
メリット②リファクタリングできる
以下の2つのコードは同じ意味になります。
if a != nil a = a else a = 10 end
a ||= 10
nilなのかどうか?でif文を使ってしまうと、コードが長くなってしまいます。
nilガードを使うことでリファクタリングすることができます。
まとめ
・nilガードの書き方「左辺があれば左辺を返し、なければ右辺を返す」
number ||= 10
nilガードを使うメリットは
nilガードの書き方と、使用するメリットについて解説しました。どんどんnilガードを使って理解を深めていきましょう。
この記事の説明がわかりやすかった!ここ間違ってるよ!次こんな記事を書いて欲しい!などあればコメント、DMよろしくお願いします。LGTMもぜひ。
Ruby on Railsを中心に「なんとなくの理解で使っているもの」を取り上げて解説しています。そのほかの記事もぜひご覧ください。
ほかの記事
Twitterもやってますので、フォローしていただけたらうれしいです。 卓球、心理学、哲学、Webサービス、好きな音楽、カメラ、登山、ランニング、読んだ本など何でもつぶやいてます。 https://twitter.com/atsushi101011