在ruby中创建二维数组

时间:2014-12-03 17:18:13

标签: ruby

我是ruby的新手,并尝试创建一个2D数组 我不想使用任何lib和良好的表达

mat = Array.new(rows){ Array.new(cols) }

而不是像C方式首先声明A 2d数组[[]]

mat = Array.new(rows)
i = rows
while i > 0
    mat[i].push(Array.new(cols) )
    i -=1
end

它因mat[[]]而出错,说未定义的局部变量或方法`mat' for main:Object(NameError)

当我删除声明时,它会将矩阵创建为[1,2,[][]]

假设传递行和列

该怎么做

3 个答案:

答案 0 :(得分:-1)

rows = 5
cols = 3

mat = Array.new(rows)
i = rows
while i >= 0 
  mat[i] = (Array.new(cols) )
  i -=1
end

p mat # => [[nil, nil, nil], [nil, nil, nil], [nil, nil, nil], [nil, nil, nil], [nil, nil, nil], [nil, nil, nil]]

答案 1 :(得分:-2)

我这样做了

mat = []
  rows.times do |r| 
    mat[r] = []
    cols.times do |c| 
      mat[r][c] 
    end
  end

答案 2 :(得分:-2)

Array.new(i,Array.new)其中'i'是您要嵌入的数组的数量。

例如:

 Array.new(3, Array.new)
 returns  `=> `[[], [], []]`.

您甚至可以在嵌入式阵列中指定您想要的值:

前:

Array.new(3, Array.new(3, Array.new(3, "HEY"))
 => [[["HEY", "HEY", "HEY"], ["HEY", "HEY", "HEY"], ["HEY", "HEY", "HEY"]], [["HEY", "HEY", "HEY"], ["HEY", "HEY", "HEY"], ["HEY", "HEY", "HEY"]], [["HEY", "HEY", "HEY"], ["HEY", "HEY", "HEY"], ["HEY", "HEY", "HEY"]]]