-1
(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

这段代码可能绝对可怕,但我在获取值以“粘贴”到我的数组时遇到问题。每当我运行代码时,它会将所有数字作为一个包含单个值的数组返回,我不确定为什么,任何关于为什么以及如何解决这个问题的解释都会很好。更多的是学习练习。

4

1 回答 1

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在每个范围内定义变量,它将是该范围的本地变量,这就是您的值不会“坚持”-> 持久的原因。

于 2013-03-12T18:18:47.240 回答