Ruby是否有内置的do。。。虽然
Ruby有大量的条件构造,包括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
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