Крошечный альтернативный режим для создания последовательного массива, передавая одно значение в ruby?
Например:
number = 5 #output: [1,2,3,4,5]
Я знаю, что я мог бы использовать «каждый», проходя x позиций, сохраняя во вспомогательной переменной. Но я бы хотел что-то более практичное, и я знаю, что Ruby имеет большой потенциал для короткого кода.
Настолько простое решение:
(1..number).to_a
вы можете попробовать ...
[*1..10] # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
или ...
num = 10 [*1..num] # => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Мое предпочтительное решение:
Array.new(5) { |i| i + 1 } # => [1, 2, 3, 4, 5]
, потому что оно легко распространяется на произвольные последовательности, такие как:
Array.new(5) { |i| (i + 1)**2 } # => [1, 4, 9, 16, 25]
Для этого существует блочная форма конструктора.
В то время как решение по дальности Дарлана - мой предпочтительный метод, вы также можете использовать перечислимое решение, например:
5.upto(10).to_a