Ruby有内置功能吗?

Cri*_*scu 14 ruby conditional keyword

Ruby有丰富的条件结构,包括if/ unless,while/ until等.

while来自C 的街区:

while (condition) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

可以直接翻译成Ruby:

while condition 
    ...
end
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法在Ruby中找到一个类似C的块的内置等价物do ... while,其中块内容至少执行一次:

do { 
    ... 
} while (condition);
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Cri*_*scu 30

......我能想到的最好的是最后的loop构造break:

loop do
    ...
    break unless condition
end
Run Code Online (Sandbox Code Playgroud)

  • 是的,这是Matz推荐的方法.见http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/6745 (4认同)

Gen*_*e T 12

你可以做

i=1
begin
  ...
  i+=1 
end until 10==x
Run Code Online (Sandbox Code Playgroud)

(你也可以使用while子句到begin..end结尾)

参见Flanagan的第128页/ Matz Ruby Prog'g Lang书:这是1.8之后的版本中可以删除的内容


小智 6

number=3
begin
 puts  number
 number-=1
end while number>0
Run Code Online (Sandbox Code Playgroud)