忽然想到,Ruby 中有没有对应 C 语言里 do-while 的语法,即循环体至少执行一次。就尝试性地写了下面的代码:
begin
puts "OK"
end while false
结果真的输出了一行“OK”!
接着把 while 换成 if:
begin
puts "OK"
end if false
和期望的一样,什么都没有输出。
再试试去掉 begin end 的 while:
puts "OK" while false
同样什么都没有输出,看来 Ruby 对 begin end while 这样的语法做了特殊处理,虽然因此获得了类似 do while 的语句,但因此又多了一个“特例”,行为和其他的语句不统一。