Ruby - 为什么使用“until”时“while”也可以这样做

时间:2013-05-22 21:27:18

标签: ruby

这是使用while的代码:

i = 0
num = 5

while i < num do
   puts "Inside the loop! i = #{i}"
   i += 1
end

这是使用until的代码:

i = 0
num = 5

until i > num do
   puts "Inside the loop! i = #{i}"
   i += 1
end

有人可以举出一个例子,说明何时应该首选而不是另一个?对我来说,如果他们做同样的事情,没有理由让until while。在我看来,这就是为什么其他编程语言不兼得的原因。

2 个答案:

答案 0 :(得分:15)

哪个更好:

  1. makeSoup while !ingredients.empty?
  2. makeSoup until ingredients.empty?
  3. whileuntil执行相同的操作,在某些情况下,只有“更好”才能阅读。

答案 1 :(得分:11)

这是关于可读性的。 “正确”的例子是完全主观:

done = my_function until done

done = false
until done
 # better than "while not done"? Who can say?
 # do something that modifies the state of done
end

my_object.do_something until my_object.complete
# Or, if the method were otherwise named...
my_object.do_something while my_object.incomplete