Ruby中是否有一种简单的方法可以从某些内容中获取true / false值而无需将其明确地评估为true或false
e.g。怎么会更简洁地表达
class User
def completed_initialization?
initialization_completed == 1 ? true : false
end
end
有什么方法可以按照
的方式做点什么initialization_completed.true?
显然没有多少但是因为我在Ruby的zen花园里我不妨拥抱它
编辑(我已更新示例)
这个问题非常糟糕,正如@Sergio Tulentsev非常温和地指出的那样。原始示例(下面)当然直接评估为布尔值。我仍然在努力寻找一个我的意思的例子,但塞尔吉奥的双重否定实际上正是我所寻找的。 p>
原始示例
class User
def top_responder
responses.count > 10 ? true : false
end
end
答案 0 :(得分:5)
>
运算符已经返回布尔值。所以它可以只是
def top_responder
responses.count > 10
end
要将任意值转换为布尔值,我会为你提供这个小小的否定技巧。
t = 'foo'
!!t # => true
t = 1
!!t # => true
t = 0
!!t # => true
t = nil
!!t # => false
第一个否定“强制转换”值为布尔值并将其反转。也就是说,对于nil
/ false
,它将返回true,对于其他所有内容,它将返回false。我们需要另一个否定来使它产生“正常”值。