Effective Ruby: 項目1 Rubyのtrue/falseについて

項目1 Rubyは何を真と考えているかを正確に理解しよう

以下のコードを見て

一瞬あれ?となりました。

class Bad
  def == (other)
    true
  end
end

?> false == Bad.new
=> false

?> Bad.new == false
=> true

最後のは、methodの戻り値が返っていました。
Object#==のoverrideを考慮して、== falseは使わない方が良いとのこと。
なるほど。
これは覚えておこう。

覚えておく事項

  • false、nil以外の全ての値は真である。
  • 多くの言語とは異なり、Rubyでは数値ゼロは真である。
  • falseとnilを区別しなければならないときには、nil?メソッドを使うか、falseを左被演算子とする==演算子を使おう。

Effective Ruby

Effective Ruby