我怎样才能避免Ruby中的真实性?

And*_*imm 4 ruby truthiness

是否有任何标准方法可以避免Ruby中的真实性,或者我是否需要推出自己的解决方案,例如

class FalseClass
  def to_bool
    self
  end
end

class TrueClass
  def to_bool
    self
  end
end

true.to_bool # => true
false.to_bool # => false
nil.to_bool # => NoMethodError
42.to_bool # => NoMethodError
Run Code Online (Sandbox Code Playgroud)

背景:我知道这to_bool会违背Ruby的宽容性质,但我正在玩三元逻辑,并且想要避免意外地做类似的事情

require "ternary_logic"
x = UNKNOWN
do_something if x
Run Code Online (Sandbox Code Playgroud)

我正在使用三元逻辑,因为我正在写一个flatmate共享网站的解析器(用于个人而非商业用途)并且某些字段可能缺少信息,因此不知道该地方是否存在是否符合我的标准.但是,我会尝试限制使用三元逻辑的代码量.

Jör*_*tag 9

在Ruby中不可能影响真实性或虚假性.nil并且false是虚假的,其他一切都是真实的.

它是每两年左右出现的一个功能,但总是被拒绝.(由于我个人认为没有说服力的原因,但我不是那个做主的人.)

您必须实现自己的逻辑系统,但不能禁止某人在未知值上使用Ruby的逻辑运算符.

我重新实现了Ruby的逻辑系统一次,为了好玩并展示它可以完成.将其扩展到三元逻辑应该相当容易.(当我写这篇文章的时候,我实际上从RubySpec中获取了一致性测试并将它们移植到我的实现中,并且它们都通过了,所以我相信它与Ruby的语义相匹配.)