Я знаю, как достичь этого, но это не похоже на рубиновый способ его выполнения.Вращающийся массив до тех пор, пока не будет выполнено условие
У меня есть хэш дней в неделю:
DAYS = {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
4 => "Thursday",
5 => "Friday",
6 => "Saturday",
7 => "Sunday"}
(есть, вероятно, некоторые рельсы помощника для этого, но я реализовал это самый быстрый способ, которым я мог думать)
Теперь я хотел бы создать массив, в котором первый элемент сегодня, а остальные дни должны оставаться упорядоченными.
Вот этот массив
def day_keys
# proper sorting of days, start with today and then continue
day_array = (1..7).to_a
loop do
break if day_array.first == Time.now.wday
day_array.rotate!
end
day_array
end
Это пятница сегодня, поэтому она возвращает [5,6,7,1,2,3,4]
. После этого я сопоставляю значения из этого массива с ключами из хэша DAYS
, чтобы найти имена дней.
Решение кажется довольно грубым для меня, поэтому я хотел бы услышать некоторые идеи о том, как реализовать это. Я потратил некоторое время, глядя на Array#cycle
и Enumerable#inject
, но ничто, похоже, не соответствует моим потребностям.
Можете ли вы сказать нам, что вы пытаетесь достичь, в контексте ваше приложение? Для этого не может быть необходимости. – Agis
Используется в помощнике, который отображает календарь. Мне нужен календарь в виде таблицы, которая отображает часы дня в строках и днях недели в столбцах. Я не мог найти хороших камней для этого, поэтому решил сам создать его. – shime