所以我试图将一个数字转换为一个整数数组,从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]
答案 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
可以是任何数字。