在Python中,如果我使用bool
函数,则可以确定表达式求值的布尔值。例如:
bool(1)
#=> True
Ruby中是否存在这样的构造?我似乎找不到找到这样做的证据。我目前不得不使用等效测试来确定布尔值,并且想知道是否有更方便的方法来做到这一点。
答案 0 :(得分:9)
总有经典
!!a
这也适用于Javascript,C ++和(使用not
而非!
)Python。
请记住,Ruby与Python具有不同的真实性概念。在Python中,许多“空”对象都是虚假的,而自定义类可以通过魔术方法确定其真实性。在Ruby中,仅 nil
和false
是虚假的,而 all 的其他值(包括数字,字符串,列表和任何用户定义的类) )是真的。
答案 1 :(得分:3)
如果要使用[116, 101, 115, 116]
test
和1 == true
,则应显式比较这些值,例如:
0 == false
这是因为在Ruby中,只有if x == 1
# do something
end
和false
是虚假的。其余的取值为nil
。
换句话说:
true
答案 2 :(得分:3)
如果您知道将使用哪种类型,则可以尝试在Ruby中模仿Python的逻辑。
在Ruby中,空列表,哈希或字符串是正确的,因此您需要检查它们是否不为空:
![].empty?
# => false
![3].empty?
# => true
!"".empty?
# => false
!"foo".empty?
# => true
同样,您可以检查整数是否不为零:
0 != 0
#=> false
1 != 0
#=> true
3.14 != 0
#=> true