ruby 中 or 和双管运算符之间的区别-ag捕鱼王app官网

ruby 中 or 和双管运算符之间的区别

作者:迹忆客 最近更新:2023/03/20 浏览次数:

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 中使用安全导航。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便
网站地图