【问题标题】:RUBY Pushing array into array overwrites all previous elements?RUBY 将数组推入数组会覆盖所有先前的元素?
【发布时间】:2015-10-05 08:31:10
【问题描述】:

这个函数读取一个文件并将数据插入到一个多维数组中,但是似乎每次将 temp 推入 $table 时,它​​都会用 temp 中的内容完全覆盖 $table 中的每个元素。

def self.read_file
i = 0
j = 0
$table = []
$n = 0
temp = []

first_line = true

IO.foreach("data.dat") do |line|
  data = line.split
  if first_line
    $n = data[0].to_i
    first_line = false
    puts('Read first line')
    puts $n
 else
   while (j < $n)
     temp[j] = data[j].to_i
     j = j + 1
   end
   $table << temp
   i = i + 1
   j = 0
  end
p $table
end

end

谁能解释这种行为并帮我调试它?

【问题讨论】:

    标签: arrays ruby push


    【解决方案1】:

    我已经编辑了你的方法。它应该工作。

       def self.read_file
           i = 0
           j = 0
          table = []
           n = 0
         first_line = true
         IO.foreach("data.dat") do |line|
           temp=[]
           data = line.split
           if first_line
            n = data[0].to_i
           first_line = false
           puts('Read first line')
          puts n
       else
          while (j < n)
             temp[j] = data[j].to_i
              j = j + 1
           end
        table << temp
         i = i + 1
          j = 0
       end
        p table
      end
     end
    

    【讨论】:

    • 不鼓励使用纯代码的答案。请至少描述您所做的更改,或仅发布代码的相关部分。
    • 我认为问题出在 temp 中,所以我只是在 do 循环中更改了 temp 变量的位置
    猜你喜欢
    • 2021-03-20
    • 2017-06-24
    • 1970-01-01
    • 2017-09-15
    • 2016-07-16
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多