webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

Rubyをもう一歩進んで勉強する1章(何を真と考えるか)

Rubyにもう少し深く触れるべく、Effective Rubyを少しずつ読んでいこうと思います。

この記事は勉強した際のメモ・感想・まとめです

Effective Ruby

Effective Ruby

スポンサーリンク

Rubyは何を真と考えるか

if文で分岐を行う際、nullは真偽どちらか、0は真偽どちらにするのか、プログラミング言語によって定義されているが、Rubyはどのように定義されているのでしょうという話です。

結論をいうと、falseとnil意外はすべて真になります。

論理学的に言うと、偽は偽ですが、A => Bという論理式で、Aが存在しない場合はBの真偽によって評価するのですが、Bが存在しない場合は偽と評価します。なので、falseとnilだけが偽というのは納得できます。

では、if文でfalseとnilを区別したいときは、どうしましょう。

例えば、アプリケーションを作っているとき、nilの場合にだけ処理を行いたいなどの場合です。

このときは、nil?メソッドもしくは、==(ただし、falseが左に来る)を使います。

どちらかというと、nil?メソッドの方をよく使います。

==で区別する場合は注意が必要です。

Rubyでは演算子をオーバーライドすることができるので、falseを右にもってきてしまうと、オーバーライドした==演算子で比較を行っているかもしれません。なので、falseと等しいかどうかを見たいときは、falseを左側にし、Falseクラスの==演算子を使うようにしましょう。

感想

例外なく、falseとnilしか偽になりませんとなっていると覚えやすくてありがたいです。

また、書籍の構成も、最後にまとめがあってわかりやすく、1章ごとが数ページなので少しずつ読みやすい印象でした。

Effective Ruby

Effective Ruby

たのしいRuby 第5版

たのしいRuby 第5版

メタプログラミングRuby 第2版

メタプログラミングRuby 第2版