gpt4 book ai didi

ruby - 奇怪的 Ruby If 语句问题

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:04 24 4
gpt4 key购买 nike

我在 Ruby 的 If 语句中注意到了这个小问题(我认为)。这是一个例子:

my_number = nil
if my_number < 3
'number is less than 3'
end

显然,当您运行这段代码时,您会收到“Fixnum 与 nil 的比较失败”错误。现在这里有一些奇怪的东西。如果我在 If 语句中稍作更改以检查是否为 nil,它就可以正常工作。示例:

my_number = nil
if my_number && my_number < 3
'number is less than 3'
end

添加 nil 检查使其不会崩溃。这听起来可能很愚蠢,但我不明白为什么会这样。它不应该仍然抛出错误吗?

感谢任何可以解释这一点的人。 :) 谢谢!

最佳答案

bool 表达式以所谓的“短路”方式求值。也就是说,一旦它知道结果,它就不会继续尝试计算表达式。

所以它会执行 if my_number因为那是false , 没有必要继续,因为 false && <anything>总是假的。

这是一个很有用的语言特性,许多语言都是这样工作的(最初的 Visual Basic 是我能想到的一个异常(exception)),因为它可以让你做这种测试而不需要繁琐的嵌套“if”。

关于ruby - 奇怪的 Ruby If 语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3783483/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com