Ruby: Rubocopで`== true`や`== false`が怒られない理由

前置き: nil == falseはfalse Rubyの本には「条件分岐でnilとfalse以外のすべてのオブジェクトがtrueとみなされます」と書かれているのが定番です。 しかし以下のとおり、nilとfalseは別のオブジェクトです。 nil == false #=> false nil?も同じことをおっしゃっています。 nil.nil? #=> true false.nil? #=> false true.nil? #=> false nilとfalseが同一視されるのは、あくまで条件分岐(ifやcase)のときです。 a = nil if a “true!” else “false!” end #=> “false!” 上のようにaをnilからfalseに変えても結果は変わりません。 Rubyにtrue?メソッドやfalse?メソッドはない ちなみにtrue?やfalse?といった冗長かつ悪手にしかならないメソッドはデフォルトのRubyにはありません。 true.true? #=> NoMethodError: undefined method `true?’ for true:TrueClass false.false? #=> NoMethodError: undefined method `false?’ for false:FalseClass if a == … Continue reading Ruby: Rubocopで`== true`や`== false`が怒られない理由