从一些个人实验中,我发现 ruby "and"/"&&"的行为似乎类似于 if 语句。
condition && action
似乎和
做的一样 if condition
action
end
这些是等价的吗?
最佳答案
因为&&
短路了
取a && b
。如果 a
的计算结果为 false,则无论 b
是什么,表达式都是 false,因此为避免浪费时间,b
不会被计算。 b
仅在 a
计算结果为真时才需要计算。
||
(“或”)也有类似的短路行为。你能算出它是什么吗?
[编辑]
正如 Holger 刚刚指出的那样,when I say a "true" value in Ruby, I mean any truthy value, and when I mention a "false" value in Ruby, I mean any falsey value .也就是说,true
和 false
不是 Ruby 中唯一的真值和假值。事实上,Ruby 中除了 nil
或 false
之外的每个值都是真值,只有这两个异常(exception)是假值。请注意,字符串 "false"
和数字 0
不是这两个异常之一,因此它们实际上是真实的。
我们现在可以完整地描述a && b
的行为:
- 如果
a
的计算结果为假值,则a && b
返回a
的值,同时b
未评估。 - 如果
a
的计算结果为真值,则a && b
返回b
的值,结果a
和b
正在评估。
关于ruby - 使用 && ("and") 就像在 ruby 中一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45970492/