我正在尝试解决 http://projecteuler.net/problem=1 .
我想创建一个方法,它接受一个整数,然后创建一个包含它前面的所有整数的数组,并将整数本身作为数组中的值。
以下是我目前所拥有的。代码不起作用。
def make_array(num)
numbers = Array.new num
count = 1
numbers.each do |number|
numbers << number = count
count = count + 1
end
return numbers
end
make_array(10)
最佳答案
(1..num).to_a
是您在 Ruby 中需要做的全部。
1..num
将创建一个 Range
对象,以 1
开始并以任意值 num
结束是。 Range
对象有 to_a
方法通过枚举范围内的每个元素将它们分解成真正的数组
。
对于大多数用途,您实际上不需要 Array
- Range
就可以正常工作。这包括迭代(考虑到您正在处理的问题,这就是我假设您想要的)。
也就是说,知道如何“手工”创建这样一个Array
是宝贵的学习经验,因此您可能希望继续努力。提示:您想从一个空数组 ([]
) 开始,而不是 Array.new num
,然后迭代一些内容 num.times
,然后将数字添加到 Array
中。如果您已经从大小为 num
的 Array
开始,然后将 num
元素插入其中,您将得到两次 num
个元素。如果像您的情况一样,您在迭代数组时添加元素,则循环永远不会退出,因为对于您处理的每个元素,您都会添加另一个元素。这就像用磁铁的排斥面追逐一个金属球。
关于ruby - 如何用递增的值填充数组 Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14190652/