😎

[Feature #21556] 特定のクラスに #true? / #false? メソッドを追加する提案

に公開

[Feature #21556] Add true? and false? methods to NilClass, TrueClass, FalseClass, and String

  • NilClass TrueClass FalseClass String#true? / #false? メソッドを追加する提案
  • これらは以下のような挙動になる想定
# String

'true'.true? # true
'false'.true? # false
''.true? # false
JPV
'true'.false? # false
'false'.false? # true
''.false? # false

# Boolean

true.true? # true
true.false? # false

false.true? # false
false.false? # true

# Nil

nil.true? # false
nil.false? # false
  • "true" / "false" のような文字列を true / false で判定できるようにしたい、というモチベーションだと思うんですが Ruby 上での真理値の仕様を考えると "false".true? # => false になったり nil.false? # => false になるのはかなり直感とずれるので気持ち悪いですね…
  • "false""" も Ruby 上では真だし nil だし
  • そもそも何を持って true なのか false なのかを扱いたいのはそのアプリケーションに依存するので Ruby 本体で決めきるのは難しそうですねえ
  • 最近同じようなチケットみなかったっけ?と思ったら [Feature #20882] Provide Boolean(...) があった
  • 全然最近ではなかった
  • こっちは Boolean("1") # => true みたいに変換するメソッドの提案
GitHubで編集を提案

Discussion