Есть ли в Ruby встроенный do ... while? - PullRequest
14 голосов
/ 10 октября 2008

Ruby имеет множество условных конструкций, включая if / unless, while / until и т. Д.

Блок while из C:

while (condition) {
    ...
}

можно напрямую перевести на Ruby:

while condition 
    ...
end

Однако я не могу найти встроенный эквивалент в Ruby для C-подобного do ... while блока, в котором содержимое блока выполняется хотя бы один раз:

do { 
    ... 
} while (condition);

Есть предложения?

Ответы [ 4 ]

30 голосов
/ 10 октября 2008

... Лучшее, что я мог придумать, - это конструкция loop с break в конце:

loop do
    ...
    break unless condition
end
12 голосов
/ 10 октября 2008

Вы можете сделать

i=1
begin
  ...
  i+=1 
end until 10==x

(можно также добавить предложение while до конца begin..end)

см. Стр. 128 книги Flanagan / Matz Ruby Prog'g Lang: это то, что может быть удалено в релизах после 1.8

6 голосов
/ 02 ноября 2009
number=3
begin
 puts  number
 number-=1
end while number>0
0 голосов
/ 10 октября 2008

Вы можете использовать

while condition
  ...
end
...