在Ruby中添加粘贴到数组的元素

时间:2013-03-12 18:14:30

标签: ruby

(100..999).each do |x| 
  (100..999).each do |y|

    z = x * y
    a = []

    if z.to_s.reverse == z.to_s
        a.push(z)
    end

    puts a

  end
end

这段代码可能非常糟糕,但是我遇到了让数据“坚持”到我的数组的问题。每当我运行代码时,它会将所有数字作为一个数组返回,并且我不确定为什么,任何解释为什么以及如何解决这个问题都会很好。比任何事情更多的学习练习。

1 个答案:

答案 0 :(得分:3)

您需要将a = []放在块外面,如下所示:

a = []

(100..999).each do |x| 
  (100..999).each do |y|

    z = x * y

    a.push(z) if z.to_s.reverse == z.to_s

  end
end

puts a

如果您没有这样做,将在每个循环期间创建一个新数组。要理解这一点,您应该查看有关范围的文档。如果您在每个范围内定义a变量,它将是该范围的本地变量,这就是您的值不会“粘住”的原因 - >持续。