Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby是否有内置的do。。。虽然_Ruby_Conditional_Keyword - Fatal编程技术网

Ruby是否有内置的do。。。虽然

Ruby是否有内置的do。。。虽然,ruby,conditional,keyword,Ruby,Conditional,Keyword,Ruby有大量的条件构造,包括if/除非,while/直到等 来自C的while块: while (condition) { ... } 可以直接转换为Ruby: while condition ... end 然而,我似乎在Ruby中找不到类似C的do。。。而块内容至少执行一次的块: do { ... } while (condition); 有什么建议吗?…我能想到的最好的方法是循环构造,最后是中断: loop do ... break u

Ruby有大量的条件构造,包括
if
/
除非
while
/
直到

来自C的
while
块:

while (condition) {
    ...
}
可以直接转换为Ruby:

while condition 
    ...
end
然而,我似乎在Ruby中找不到类似C的
do。。。而块内容至少执行一次的
块:

do { 
    ... 
} while (condition);

有什么建议吗?

…我能想到的最好的方法是
循环
构造,最后是
中断

loop do
    ...
    break unless condition
end
你可以用

while condition
  ...
end
你能行

i=1
begin
  ...
  i+=1 
end until 10==x
(您还可以在begin..end的末尾附加while子句)


参见Flanagan/Matz Ruby Prog'g Lang book的第128页:这是在1.8之后的版本中可以删除的内容,而条件与do while条件不同。在do while的情况下,代码至少执行一次。问题的关键是,如何执行
while(condition){…}
是显而易见的,但如何执行
do{…}while(condition)
,就不那么明显了,不管怎样,它至少运行一次内部块。这将是do的直接翻译…而从C。是Matz的评论让我对使用它感到有点紧张。我认为我应该在ubuntu和OS X中开始在1.9中测试,这不难是的,这是Matz推荐的方法。另请参见:可能的副本
number=3
begin
 puts  number
 number-=1
end while number>0