Ruby有像Python那样的bool函数吗?

2024-04-25 05:38:49 发布

您现在位置:Python中文网/ 问答频道 /正文

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

bool(1)
#=> True

Ruby中是否存在这样的构造?我似乎找不到证据证明这是真的。我现在不得不使用等价测试来确定布尔值,我想知道是否有更方便的方法来实现这一点。你知道吗


Tags: 方法函数证明true证据表达式boolruby
3条回答

如果希望1 == true0 == false,则应显式比较这些值,例如:

if x == 1
  # do something
end

这是因为,在Ruby中,只有falsenil是错误的。其余的计算结果为true。你知道吗

换句话说:

def to_bool(x)
  !!x
end

to_bool(1)          #=> true
to_bool(0)          #=> true
to_bool("0")        #=> true
to_bool("1")        #=> true
to_bool(Object.new) #=> true

to_bool(nil)        #=> false

如果您知道将使用哪种类型,可以尝试在Ruby中模仿Python的逻辑。你知道吗

在Ruby中,空列表、哈希或字符串是真实的,因此您需要检查它们是否为空:

![].empty?
# => false
![3].empty?
# => true
!"".empty?
# => false
!"foo".empty?
# => true

同样,您可以检查整数是否不为零:

0 != 0
#=> false
1 != 0
#=> true
3.14 != 0
#=> true

经典总是有的

!!a

这也适用于JavaScript、C++和(使用^ {CD1>}而不是^ {< CD2>})Python。你知道吗

请记住,Ruby对真实性的概念与Python不同。在Python中,很多“空”对象都是虚假的,自定义类的真实性可以通过一个神奇的方法来确定。在Ruby中,只有nilfalse是虚假的,所有其他值(包括数字、字符串、列表和任何用户定义的类)都是真实的。你知道吗

相关问题 更多 >