Ruby return 关键字
最后修改日期:2025 年 4 月 27 日
本教程将介绍 Ruby 中 return
关键字的用法。return 语句控制方法的执行流程和输出值。
return
关键字会立即退出一个方法,并可选择性地提供一个返回值。如果没有 return,Ruby 方法将返回最后计算的表达式。
Return 语句使方法行为更加明确,并允许提前终止。它们适用于所有值类型,包括通过数组返回多个值。
基本方法返回
此示例展示了一个带有显式 return 语句的简单方法。该方法计算并返回一个数的平方。
def square(num) return num * num end result = square(5) puts "The square is #{result}"
return
语句将计算出的值发送回调用者。没有它,方法仍然可以工作,但显式返回可以提高清晰度。
方法提前返回
Return 语句可以在到达方法末尾之前退出方法。此示例检查输入有效性,并在无效时提前返回。
def divide(a, b) return "Error: division by zero" if b == 0 a / b end puts divide(10, 2) puts divide(5, 0)
如果除数为零,该方法将立即返回错误消息。这种模式可以避免嵌套的条件语句,并提高可读性。
返回多个值
Ruby 方法可以使用数组返回多个值。此示例从除法返回商和余数。
def divmod(a, b) return [a / b, a % b] end quotient, remainder = divmod(10, 3) puts "Quotient: #{quotient}, Remainder: #{remainder}"
return 语句将这两个值打包到一个数组中。调用者可以将它们解构为单独的变量,以便于访问。
条件返回值
方法可以根据条件返回不同的值。此示例实现了一个简单的评分系统,并带有分层响应。
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 如何退出包含的方法,而不仅仅是块。
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 块进行交互。
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 的隐式返回行为。两种风格都有效,但用途不同。
def explicit_return return "Hello" "World" end def implicit_return "Hello" "World" end puts explicit_return # Outputs "Hello" puts implicit_return # Outputs "World"
显式返回会立即退出,忽略后续代码。隐式版本会计算所有表达式并返回最后一个。
来源
本教程通过实际示例介绍了 Ruby 的 return 关键字,展示了方法控制流程、多重返回和特殊情况。
作者
列出 所有 Ruby 教程。