在Ruby中将数字推送到数组中

时间:2014-09-07 19:05:43

标签: ruby arrays iterator

我正在尝试创建一个输出每个数字的程序,以及它是否可以被数字2-9整除。我这样做是通过迭代2-9并将每个数字推到一个数组上,但是,编译时出现错误:

/Users/XXX/XXX/XXX/XXX.rb:3: warning: already initialized constant ArrayOfMultiples

如何删除此错误?

这是我的代码:

(1..200).each do |number|
    output_str = ""
    ArrayOfMultiples = Array.new

    (2..9).each do |multiple|
        if number%multiple == 0 
        ArrayOfMultiples.push(multiple)
        end
    end

    output_str = number.to_s + " is divisble by " + ArrayOfMultiples.join(", ")
    puts output_str     

end

2 个答案:

答案 0 :(得分:2)

以小写字母开始变量,否则它被视为常量。如果重新初始化常量,则会收到警告。

arrayOfMultiples

如下所示的简单程序可以演示此行为:

A = 1
A = 2

当您运行上述脚本时,它会说:

test.rb:2: warning: already initialized constant A
test.rb:1: warning: previous definition of A was here

答案 1 :(得分:0)

你也可以让这更简单:

(1..200).each do |x|
  divisible_by = (2..9).select {|y| x%y==0}
  puts "#{x}: #{divisible_by.join(", ")}"
end