Шрифт:
Здесь формы с ключевыми словами
Предложение
Этот код напечатает
Если проверяемое выражение — целое число, то его можно сравнивать с целочисленным диапазоном (например,
В Ruby имеется богатый набор циклических конструкций. К примеру,
В примерах из таблицы 1.2 предполагается, что где-то определен такой массив
В цикле этот массив обходится и печатается каждый его элемент.
Таблица 1.2. Циклы
| # Цикл 1 (while) | # Цикл 2 (until) |
|---|---|
| i=0 while i < list.size do print "#{list[i]} " i += 1 end | i=0 until i == list.size do print "#{list[i]} " i += 1 end |
| # Цикл 3 (for) | # Цикл 4 (итератор 'each') |
| for x in list do print "#{x} " end | list.each do |x| print "#{x} " end |
| # Цикл 5 (метод 'loop') | # Цикл 6 (метод 'loop') |
| i = 0 n=list.size-1 loop do print "#{list[i]} " i += 1 break if i > n end | i=0 n=list.size-1 loop do print "#{list[i]} " i += 1 break unless i <= n end |
| # Цикл 7 (итератор 'times') | # Цикл 8 (итератор 'upto') |
| n=list.size n.times do |i| print "#{list[i]} " end | n=list.size-1 0.upto(n) do |i| print "#{list[i]} " end |
| # Цикл 9 (for) | # Цикл 10 ('each_index') |
| n=list.size-1 for i in 0..n do print "#{list[i]} " end | list.each_index do |x| print "#{list[x]} " end |
Рассмотрим эти примеры более подробно. Циклы 1 и 2 — «стандартные» формы циклов
На мой взгляд, конструкции 3 и 4 — самый «правильный» способ кодирования циклов. Они заметно проще всех остальных: нет ни явной инициализации, ни явной проверки или инкремента. Это возможно потому, что массив «знает» свой размер, а стандартный итератор
В циклах 5 и 6 используется конструкция
В циклах 7 и 8 используется тот факт, что у массива есть числовой индекс. Итератор
Цикл 9 — это вариант цикла
В предыдущих примерах мы уделили недостаточно внимания вариантам циклов