следующий элемент (текущий + 1) или 0 (рубин) - PullRequest
2 голосов
/ 11 апреля 2010

У меня есть интервал, скажем (0..3), где следующий элемент равен +1, если не последний. Тогда следующий - 0. Я решил это кодом ниже. Просто интересно, есть ли что-нибудь еще где-то: -)

def next(max,current)

if current+1 == max
  return 0
else
  return current+1
end  
end

EDIT

обратите внимание, что при запуске кода мне нужно иметь возможность назначить любое «действительное число» в моем примере 0..3 в любое время.

Ответы [ 2 ]

6 голосов
/ 11 апреля 2010

Ruby 1.8.7 имеет Enumerable # цикл

(0..3).cycle{|x| puts x}

будет работать вечно.

Я думаю, что это действительно круто:

looper = (0..3).cycle
20.times { puts looper.next }
3 голосов
/ 11 апреля 2010

Как насчет:

def next(max,current)
(current+1) % max
end

Должно работать, если не max==0, но вы можете легко поймать это и внести залог. :)

Удачного кодирования!

Изменить: Вы также должны знать, что next является зарезервированным ключевым словом (см. этот обзор ), было бы разумно выбрать другое имя для вашего метода ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...