ZetCode

Ruby OR 关键字

最后修改日期:2025 年 4 月 27 日

本教程讲解了如何使用 Ruby 的 or 关键字。它是一个逻辑运算符,当其中一个操作数为真时,其结果为真。

or 关键字是一个逻辑运算符,如果其操作数中任何一个计算结果为真,则返回真。它的优先级低于 ||

|| 不同,or 用于控制流而非布尔逻辑。它常用于条件语句和赋值中。

基本的 OR 操作

此示例演示了 or 运算符的基本行为。如果任一操作数为真,则返回真。

basic_or.rb
a = true
b = false

if a or b
  puts "At least one is true"
else
  puts "Both are false"
end

代码检查 ab 是否为真。由于 a 为真,因此会打印第一条消息。or 运算符在第一个真条件后停止评估。

OR 用于默认值

当变量可能为 nil 或 false 时,or 运算符可以提供默认值。这是 Ruby 中一个常见的用法。

default_values.rb
name = nil
display_name = name or "Anonymous"

puts "Welcome, #{display_name}"

age = false
user_age = age or 30

puts "Age: #{user_age}"

name 为 nil 时,or 运算符返回默认字符串 "Anonymous"。对于 false 的 age 值也是如此。

OR 在条件语句中的应用

or 可以在 if 语句中组合多个条件。它常用于检查可接受的替代条件。

conditional.rb
weather = "rainy"
temperature = 15

if weather == "sunny" or temperature > 20
  puts "Good weather for a walk"
else
  puts "Better stay inside"
end

条件检查天气是否晴朗或温度是否温暖。由于两者都不为真,因此执行 else 子句。or 使条件更加灵活。

OR 与 || 的区别

虽然相似,但 or|| 的优先级不同。此示例显示了它如何影响评估顺序。

precedence.rb
x = false || true   # => true
y = false or true   # => false

puts "x: #{x}, y: #{y}"

a = 1 || 2          # => 1
b = 1 or 2          # => 1

puts "a: #{a}, b: #{b}"

|| 的优先级高于赋值,而 or 的优先级低于赋值。这会影响复合表达式中哪些操作先执行。

OR 在方法链中的应用

当主要方法可能失败时,可以使用 or 来提供备用方法。这可以创建灵活的方法链。

method_chaining.rb
def first_method
  nil
end

def second_method
  "fallback value"
end

result = first_method or second_method
puts result

first_method 返回 nil 时,or 运算符会继续评估 second_method。这种模式提供了优雅的降级。

OR 用于错误处理

当操作失败时,or 运算符可以通过提供替代执行路径来处理潜在的错误。

error_handling.rb
def load_config
  # Simulate failed config load
  nil
end

config = load_config or raise "Failed to load configuration"

puts "Config loaded: #{config}"

如果 load_config 返回 nil,or 运算符将执行 raise 语句。这提供了干净的错误处理,而无需嵌套条件。

OR 在循环中的应用

or 可以通过组合多个继续条件来控制循环执行。这使得循环控制更加灵活。

loop_control.rb
count = 0
max_attempts = 3
success = false

while count < max_attempts or !success
  puts "Attempt #{count + 1}"
  success = rand > 0.7
  count += 1
end

puts success ? "Succeeded!" : "Failed after #{count} attempts"

当仍有尝试次数或尚未成功时,循环继续。or 清晰地组合了这两个条件。

来源

Ruby 关键字文档

本教程通过实际示例介绍了 Ruby 的 or 运算符,展示了它在条件、赋值、错误处理和循环中的使用。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 Ruby 教程