ruby 中 or 和双管运算符之间的区别
or
和 ||
在 ruby 中都是逻辑运算符;由于它们的相似行为,它们可能会令人困惑。它们之间只有细微的差别,在本教程中,我们将了解它们有何不同以及应如何使用它们。
要记住的一件重要事情是,如果它们出现在不包含其他运算符的表达式中,它们的行为方式相同。否则,它们的行为会有所不同。
当没有其他运算符参与时
在此分类中,两个运算符的行为方式相同,返回第一个真值。
示例代码:
nil or 5
2 or 4
输出:
5
2
示例代码:
nil || 5
2 || 4
输出:
5
2
请注意,在上面的示例中,代码采用 expression
而不是 statement
的形式。结合任何可以使它成为陈述的东西都会产生意想不到的结果。
例如,nil or 5
是一个可以传递的表达式,可能作为方法的参数或分配给变量,而 puts nil or 5
是一个完整的语句。
测试 ruby 表达式的最佳方法是使用 interactive ruby
irb。它预装在 macos 上。要使用 irb 进行测试,请按照以下步骤操作。
-
打开一个终端
-
输入
irb
并按 enter。这将显示一个提示 -
输入你的表达式,例如,
nil || 5
,然后按 enter -
表达式的结果将显示在下一行
当涉及其他一些运营商时
在评估以下示例中的代码后,我们的重点是 a
的值。
示例代码:
a = nil or 5
b = 2 or 4
puts a
puts b
输出:
nil
2
示例代码:
a = nil || 5
b = 2 || 4
puts a
puts b
输出:
5
2
解释上述行为的最好方法是查看 ruby 运算符优先表。每当一个表达式由多个运算符组成时,就像我们在上面的示例中那样,我们需要根据它们的优先级来评估它们。
该表显示 =
运算符的优先级高于 or
运算符但低于||
运算符。因此,示例中的评估顺序可以分解如下所示。
(a = nil) or 5
(b = 2) or 4
a = (nil || 5)
b = (2 || 4)
虽然我们决定在上面的例子中使用 =
运算符,但我们可以使用任何高于 or
但低于||
的运算符并获得相同的行为;一个例子是 =
。
示例代码:
a = 1
a = 2 || 4 # a = (2 || 4)
puts a
输出:
3
示例代码:
a = 1
a = 2 or 4 # (a = 2) or 4
puts a
输出:
3
示例代码:
a = 1
a = nil || 5 # a = (nil || 5)
puts a
输出:
6
示例代码:
a = 1
a = nil or 5 # (a = nil) or 5
它将抛出一个 typeerror (nil can't be coerced into integer)
,因为 ruby 尝试首先评估括号中的表达式,将 a
增加 nil
。
转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处
本文地址:
相关文章
发布时间:2024/02/05 浏览次数:181 分类:编程语言
-
本文演示了 ruby 中注入方法的不同用途。
发布时间:2023/03/21 浏览次数:240 分类:编程语言
-
本文介绍了在 ruby 程序中调用 shell 命令的各种方法。
发布时间:2023/03/21 浏览次数:86 分类:编程语言
-
简要讨论 ruby 中的模式匹配运算符及其使用方式。
发布时间:2023/03/21 浏览次数:89 分类:编程语言
-
本教程说明了如何在 ruby 中使用安全导航。