(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
这段代码可能非常糟糕,但是我遇到了让数据“坚持”到我的数组的问题。每当我运行代码时,它会将所有数字作为一个数组返回,并且我不确定为什么,任何解释为什么以及如何解决这个问题都会很好。比任何事情更多的学习练习。
答案 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
变量,它将是该范围的本地变量,这就是您的值不会“粘住”的原因 - >持续。