将数字转换为从1开始的整数数组

时间:2017-10-04 18:41:16

标签: arrays ruby

所以我试图将一个数字转换为一个整数数组,从1开始。因此,例如,如果数字为9,我希望数组为nums = [1,2,3,4,5,6,7,8,9]是否有任何内置方法?我尝试以下方法:

 arr = [] 
(1..9).each do |num|   
  arr << num 
end

但这给了我以下输出。 arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8, 9]

5 个答案:

答案 0 :(得分:4)

使用..运算符创建一个Range,并且对于docs,Range可以像任何其他Enumerable对象一样直接转换为数组:

(1..9).to_a
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

您可能有兴趣知道您也可以使用使用字符串值构建的Range来执行此操作:

('a'..'e').to_a
#=> ["a", "b", "c", "d", "e"]

答案 1 :(得分:2)

num = 9
(1..num).to_a
# => [1, 2, 3, 4, 5, 6, 7, 8, 9]

Array(1..num)

答案 2 :(得分:2)

整洁的trick

[*1..9]
 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

因为我们在Ruby的土地上,有一些选择:

Array.new 9 { |i| i + 1 }
 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

9.times.with_object [] { |i,o| o << i + 1 }
 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

(1..Float::INFINITY).take 9
 #=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

答案 3 :(得分:0)

这是一种方法:

(1..9).map(&:itself)

答案 4 :(得分:0)

使用类似的东西:

(1..x).to_a

x可以是任何数字。