我是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,[][]]
假设传递行和列
该怎么做
答案 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"]]]