Ruby是否具有像Python一样的布尔函数?

时间:2019-05-22 20:07:13

标签: python ruby boolean-logic

在Python中,如果我使用bool函数,则可以确定表达式求值的布尔值。例如:

bool(1)
#=> True

Ruby中是否存在这样的构造?我似乎找不到找到这样做的证据。我目前不得不使用等效测试来确定布尔值,并且想知道是否有更方便的方法来做到这一点。

3 个答案:

答案 0 :(得分:9)

总有经典

!!a

这也适用于Javascript,C ++和(使用not而非!)Python。

请记住,Ruby与Python具有不同的真实性概念。在Python中,许多“空”对象都是虚假的,而自定义类可以通过魔术方法确定其真实性。在Ruby中,仅 nilfalse是虚假的,而 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
相关问题