Ruby until 关键字
最后修改日期:2025 年 4 月 27 日
本教程将解释如何使用 Ruby 的 until
关键字进行循环。until
循环会重复执行代码,直到某个条件变为真。
until
关键字创建一个在其条件为假时运行的循环。当条件评估为真时,它会停止。它是 Ruby 的 while
的反义词。
当您需要重复执行代码直到达到某个状态时,until
循环非常有用。它们可以很好地与布尔条件和方法返回值配合使用。
基本的 until 循环
这个简单的例子演示了 until
循环的基本用法。循环将继续,直到条件变为真。
counter = 0 until counter == 5 puts "Counter is #{counter}" counter += 1 end puts "Loop finished"
循环运行,直到 counter == 5
为假。每次迭代都会增加计数器,并在计数器达到 5 时停止。退出后会打印消息。
until 作为修饰符
Ruby 允许将 until
用作语句修饰符,将其放在要执行的代码之后。这创建了一个更简洁的单行循环。
counter = 0 puts "Counter is #{counter}" until (counter += 1) == 5 puts "Loop finished"
until
后面的代码会重复执行,直到条件为真。递增发生在条件检查本身中。这种形式更紧凑。
until 与用户输入
until
循环非常适合验证用户输入。此示例会一直要求输入,直到收到有效响应。
response = "" until %w[y n].include?(response.downcase) print "Do you want to continue? (y/n): " response = gets.chomp end puts "You chose #{response}"
循环将继续,直到用户输入 'y' 或 'n'。条件检查响应是否在允许的列表中。使用 downcase
将大小写标准化。
until 与 begin-end 块
将 begin-end
与 until
一起使用可以确保在检查条件之前至少执行一次代码。这创建了一个 do-while 风格的循环。
attempts = 0 begin attempts += 1 puts "Attempt #{attempts}" result = rand(10) puts "Got #{result}" end until result == 7 puts "Found 7 in #{attempts} attempts"
代码块首先执行,然后检查条件。这保证了至少一次迭代。当您必须在测试条件之前运行代码时,此方法很有用。
until 与 Break
break
语句可以提前退出 until
循环。此示例演示了如何从块内部终止循环。
count = 0 until count == 100 count += 1 break if count == 5 puts "Count is #{count}" end puts "Stopped at #{count}"
循环通常会运行直到 count 达到 100,但当 count 达到 5 时,break
会退出。这提供了对循环终止的额外控制。
until 与 Next
next
关键字会跳到 until
循环的下一次迭代。此示例演示了如何跳过偶数。
number = 0 until number >= 10 number += 1 next if number.even? puts "Odd number: #{number}" end puts "Finished"
当 number
是偶数时,next
会跳过块的其余部分。只打印奇数。循环将继续,直到 number 达到 10。
until 与复杂条件
until
可以使用逻辑运算符来处理复杂条件。此示例在循环条件中检查多个退出标准。
temperature = 0 time = 0 until temperature >= 100 || time >= 10 puts "Heating... Time: #{time} min, Temp: #{temperature}C" temperature += rand(15..25) time += 1 end puts "Final temperature: #{temperature}C after #{time} minutes"
循环将继续,直到温度达到 100°C 或 10 分钟过去。条件使用逻辑 OR 运算符 (||
) 组合了两个检查。
来源
本教程涵盖了 Ruby 的 until
循环,并通过实际示例展示了基本用法、修饰符、流程控制和复杂条件。
作者
列出 所有 Ruby 教程。