我尝试像这样扩展布尔类:
class TrueClass def to_i() 1 end end
class TrueClass def to_int() 1 end end
class FalseClass def to_i() 0 end end
class FalseClass def to_int() 0 end end
但1 * true
仍会引发true can't be coerced into Fixnum
答案 0 :(得分:1)
阅读the article in the comment, tl; dr 将是:
class TrueClass
def to_i
1
end
def coerce(other)
[other, other.is_a?(Numeric) ? to_i : self]
end
end
1 * true # => 1
如果你只想用布尔值算术,你可以删除条件,但这可能有副作用。