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 教程。