ZetCode

Ruby return 关键字

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

本教程将介绍 Ruby 中 return 关键字的用法。return 语句控制方法的执行流程和输出值。

return 关键字会立即退出一个方法,并可选择性地提供一个返回值。如果没有 return,Ruby 方法将返回最后计算的表达式。

Return 语句使方法行为更加明确,并允许提前终止。它们适用于所有值类型,包括通过数组返回多个值。

基本方法返回

此示例展示了一个带有显式 return 语句的简单方法。该方法计算并返回一个数的平方。

basic_return.rb
def square(num)
  return num * num
end

result = square(5)
puts "The square is #{result}"

return 语句将计算出的值发送回调用者。没有它,方法仍然可以工作,但显式返回可以提高清晰度。

方法提前返回

Return 语句可以在到达方法末尾之前退出方法。此示例检查输入有效性,并在无效时提前返回。

early_return.rb
def divide(a, b)
  return "Error: division by zero" if b == 0
  a / b
end

puts divide(10, 2)
puts divide(5, 0)

如果除数为零,该方法将立即返回错误消息。这种模式可以避免嵌套的条件语句,并提高可读性。

返回多个值

Ruby 方法可以使用数组返回多个值。此示例从除法返回商和余数。

multiple_return.rb
def divmod(a, b)
  return [a / b, a % b]
end

quotient, remainder = divmod(10, 3)
puts "Quotient: #{quotient}, Remainder: #{remainder}"

return 语句将这两个值打包到一个数组中。调用者可以将它们解构为单独的变量,以便于访问。

条件返回值

方法可以根据条件返回不同的值。此示例实现了一个简单的评分系统,并带有分层响应。

conditional_return.rb
def evaluate_score(score)
  return "Excellent!" if score >= 90
  return "Good job" if score >= 70
  return "Needs improvement" if score >= 50
  "Fail"
end

puts evaluate_score(95)
puts evaluate_score(65)

每个条件都返回一个不同的字符串。最后的隐式返回处理最低分数的情况。这种模式创建了可读的决策树。

块中返回

Return 关键字在块和方法中的行为不同。此示例演示了 return 如何退出包含的方法,而不仅仅是块。

block_return.rb
def find_first_even(numbers)
  numbers.each do |n|
    return n if n.even?
  end
  nil
end

puts find_first_even([1, 3, 5, 2, 4])
puts find_first_even([1, 3, 5])

当找到偶数时,return 语句会退出整个方法。如果没有它,块将继续处理所有元素。

使用 begin-rescue 返回

Return 语句可与异常处理一起使用。此示例展示了 return 值如何与 rescue 块进行交互。

rescue_return.rb
def safe_divide(a, b)
  begin
    a / b
  rescue ZeroDivisionError
    return "Cannot divide by zero"
  end
end

puts safe_divide(10, 2)
puts safe_divide(5, 0)

该方法返回除法结果或错误消息。rescue 块中的 return 提供了一个替代执行路径。

显式与隐式返回

此示例比较了显式 return 语句和 Ruby 的隐式返回行为。两种风格都有效,但用途不同。

explicit_vs_implicit.rb
def explicit_return
  return "Hello"
  "World"
end

def implicit_return
  "Hello"
  "World"
end

puts explicit_return # Outputs "Hello"
puts implicit_return # Outputs "World"

显式返回会立即退出,忽略后续代码。隐式版本会计算所有表达式并返回最后一个。

来源

Ruby 关键字文档

本教程通过实际示例介绍了 Ruby 的 return 关键字,展示了方法控制流程、多重返回和特殊情况。

作者

我的名字是 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直在撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有超过十年的经验。

列出 所有 Ruby 教程