Как я могу создать массив из метода с ruby - PullRequest
0 голосов
/ 12 февраля 2019

Как сделать массив с интервалом от 30 минут до 8 часов.так что это иш:

[30, 60, 90, all-the-way-to,  480]

Ответы [ 4 ]

0 голосов
/ 13 февраля 2019

Выбор опции (Enumerable#select) из диапазона:

stop = 480
step = 30

(step..stop).select { |n| n % step == 0 }

#=> [0, 30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480]
0 голосов
/ 12 февраля 2019

Я придумал это, но @infused ответ намного лучше.

a = (1..16).to_a.map{|i| i*30 }
0 голосов
/ 13 февраля 2019

Ваши аргументы

increment =  30
duration  = 480 # 8*60

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

increment.step(by: increment, to: duration).to_a
  #=> [ 30,  60,  90, 120, 150, 180, 210, 240,
  #    270, 300, 330, 360, 390, 420, 450, 480] 

, что хорошо читается. Числовой # шаг , если используется без блока, возвращает перечислитель, поэтому необходим .to_a.

0 голосов
/ 12 февраля 2019

Вы можете использовать Range и метод шага, а затем преобразовать его в массив:

(30..480).step(30).to_a

Результат:

[30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 360, 390, 420, 450, 480)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...