使用元编程使FalseClass表现得像TrueClass

Edv*_*kus 8 ruby

这是一个理论问题:是否可以将FalseClass行为更改为TrueClass?可以覆盖to_s,xor,&,| 行为但这还不够.

如果你喜欢测试驱动开发,请按照我同事的建议:

puts "false is new true!" if false
puts "never happens" if true

assert false
Run Code Online (Sandbox Code Playgroud)

断言不起作用,不是吗?是否有可能成功通过测试?

Mar*_*une 9

这不可能.考虑它的一种方法是没有Object#truthiness?可以重新定义的方法.

在Ruby MRI,该感实性测试是RTEST被硬连接到任何意义,但宏观QfalseQnil,对应于两个常量falsenil.你必须改变它来重新定义什么是"真理".