Ruby next 关键字
最后修改日期:2025 年 4 月 27 日
本教程解释了如何使用 Ruby 的 next
关键字。这个流程控制语句在循环和代码块中跳到下一个迭代。
next
关键字会立即跳转到循环的下一个迭代。它会跳过当前迭代中任何剩余的代码。在代码块中,它将控制权返回给调用它的方法。
next
对于过滤元素或跳过无效数据很有用。它可以选择性地传递一个值以从代码块中返回。多个条件可以触发不同的跳过行为。
循环中的基本 next
这个简单的例子演示了在循环中跳过偶数。当触发时,next
语句会跳到下一个迭代。
(1..10).each do |i| next if i.even? puts "Processing odd number: #{i}" end
循环处理 1 到 10 的数字。当 i.even?
为真时,next
会跳过 puts
语句。只有奇数会被打印。
带有值的代码块中的 next
next
可以将一个值从代码块返回给调用它的方法。这个例子展示了如何在跳过某些数字的同时转换它们。
result = (1..5).map do |n| next n * 10 if n.odd? n end puts result.inspect # [10, 2, 30, 4, 50]
奇数乘以 10 并通过 next
返回。偶数则直接返回其原始值。结果结合了这两种情况。
跳过嵌套循环
next
只影响最内层的循环。这个例子展示了带有条件跳过的嵌套循环。
(1..3).each do |i| puts "Outer loop: #{i}" ('a'..'c').each do |j| next if i == 2 && j == 'b' puts " Inner loop: #{j}" end end
当 i
为 2 且 j
为 'b' 时,next
只会跳过内层循环的 puts。外层循环不受影响地继续。
while 循环中的 next
next
在 while
循环中的作用与迭代器类似。这个例子在满足条件时跳过处理。
count = 0 while count < 5 count += 1 next if count == 3 puts "Count is #{count}" end
循环在每次迭代中增加 count
。当 count
等于 3 时,next
会跳过 puts
语句。所有其他值都会被打印。
带有多个子句的条件 next
多个条件可以触发 next
并产生不同的行为。这个例子展示了复杂的过滤逻辑。
(1..20).each do |num| next puts "Skipping #{num}: too small" if num < 5 next puts "Skipping #{num}: multiple of 5" if num % 5 == 0 next if num.even? puts "Processing odd number #{num} (5-20, not multiple of 5)" end
小于 5 的数字、5 的倍数和偶数都会被跳过。每种情况都有不同的输出行为。只有符合条件的奇数会被处理。
方法代码块中的 next
当 next
在传递给方法的代码块中使用时,它会将控制权返回给方法。这个例子演示了这种行为。
def process_items yield(1) puts "After first yield" yield(2) puts "After second yield" yield(3) end process_items do |i| next if i == 2 puts "Processing #{i}" end
输出显示,当触发 next
时,控制权会返回到方法。 "Processing 2" 消息被跳过,但方法的执行会继续。
代码块中的 next 与 return 对比
这个例子对比了代码块中的 next
和 return
。next
只退出代码块,而 return
则退出包含它的方法。
def test_next [1, 2, 3].each do |i| next if i == 2 puts "next: #{i}" end puts "After next block" end def test_return [1, 2, 3].each do |i| return if i == 2 puts "return: #{i}" end puts "This won't print" end test_next test_return
next
只跳过迭代 2,然后继续。return
在迭代 2 时退出整个方法。最后的 "This message appears only in test_next." 消息只在 test_next
中出现。
来源
本教程涵盖了 Ruby 的 next 关键字,并通过示例展示了循环控制、代码块行为以及与其他流程控制语句的比较。
作者
列出 所有 Ruby 教程。