c = 5
until c == 0 do
  print c
  c -= 1
end

打破
c = 5
until c == 0
  print c
  c -= 1
end

有什么区别?
两者都显示为输出。

最佳答案

do是可选的。它指示要重复执行的代码块的开头。
在你的例子中没有区别。但是,如果尝试在一行中重新编写代码,则可以看到为什么需要:

c = 5
until c == 0 do print c; c -= 1 end
# 54321 => nil

现在试试这个不do
c = 5
until c == 0 print c; c -= 1 end
# SyntaxError: (irb):115: syntax error, unexpected tIDENTIFIER, expecting keyword_do_cond or ';' or '\n'

如您所见,block没有明确的开头,ruby将抛出一个SyntaxError

关于ruby - Ruby中的`until`和`until do`循环有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30485280/

10-08 23:09