可以将一些方法添加到Ruby对象中以实现自动转换为boolean吗?例如。 if obj == true
答案 0 :(得分:1)
==
是:==
方法的语法糖。您可以定义对象自己的:==
方法,您可以根据内部对象的状态指定比较结果应为true
和何时false
:
class SomeClass
def ==(val)
# specyfy the comparision behaviour
end
end
然后使用它:
sc = SomeClass.new
sc == true
=> true # or false, depending on :== method's implementation
答案 1 :(得分:0)
大多数情况下,您要检查对象的真实性,而不是明确地将其转换为布尔值。这就是你写的
if obj
# here, obj is truethy
else
# here, object is falsey
end
在Ruby中,只有false
和nil
被定义为falsey。所有其他对象都是真实的。这可以在如上所示的条件下使用。因此,在Ruby中显式检查true
或false
是非常罕见的。
那就是说,如果你想根据其真实性将对象转换为布尔值,你可以使用双重否定,即
obj_truthyness = !!obj
# => true or false