Подтвердить что ты не робот

Начните цикл с 1

Недавно я натолкнулся на страшную идею о том, что Integer.count петли в Ruby начинаются с 0 и переходят к n-1 во время игры с головоломками Facebook Engineering. Я сделал грязное исправление добавления одного к переменной блока в начале, чтобы он начинался с одного вместо.

Есть ли более красивый способ?

Пример:

10.times do |n|
    n += 1
    puts n
end #=> 012345789
4b9b3361

Ответ 1

Ruby поддерживает несколько способов подсчета и циклирования:

1.upto(10) do |i|
  puts i
end

>> 1.upto(10) do |i|
 >     puts i
|    end #=> 1
1
2
3
4
5
6
7
8
9
10

Там также step вместо upto, который позволяет вам увеличивать значение шага:

>> 1.step(10,2) { |i| puts i } #=> 1
1
3
5
7
9

Ответ 2

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

(1..10).each { |i| puts i }

Диапазоны дают вам полный контроль над начальными и конечными индексами (если вы хотите перейти от более низкого значения к более высокому значению).

Ответ 3

Try

(1..10).each do |i|
 #  ... i goes from 1 to 10
end

вместо этого. Это также легче читать, когда имеет значение i.

Ответ 4

Конечно, while -loop:

i = 1
while i<=10 do
  print "#{i} "
  i += 1
end
# Outputs: 1 2 3 4 5 6 7 8 9 10

Ответ 5

Старый, но это может быть что-то, что кто-то ищет..

5.times.with_index(100){|i, idx| p i, idx};nil
#=>
    0
    100
    1
    101
    2
    102
    3
    103
    4
    104