在ruby中创建二维数组
我是ruby新手,正在尝试创建2D数组 我不想使用任何lib和好的表达式在ruby中创建二维数组,ruby,Ruby,我是ruby新手,正在尝试创建2D数组 我不想使用任何lib和好的表达式 mat = Array.new(rows){ Array.new(cols) } 而是像C方式一样,首先声明2d数组mat[[]] mat = Array.new(rows) i = rows while i > 0 mat[i].push(Array.new(cols) ) i -=1 end 它给出了错误,因为mat[[],表示未定义的局部变量或main:Object的方法“mat”(Name
mat = Array.new(rows){ Array.new(cols) }
而是像C方式一样,首先声明2d数组mat[[]]
mat = Array.new(rows)
i = rows
while i > 0
mat[i].push(Array.new(cols) )
i -=1
end
它给出了错误,因为mat[[]
,表示未定义的局部变量或main:Object的方法“mat”(NameError)
当我删除declarion时,它会将矩阵创建为[1,2,[]]]
假设传递了行和列
怎么做我就是这样做的
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]]
mat = []
rows.times do |r|
mat[r] = []
cols.times do |c|
mat[r][c]
end
end
new(i,Array.new),其中“i”是要嵌入的数组数
例:
您甚至可以在嵌入式阵列中指定所需的值:
例:
你应该分享你的成果是的还有你改变了什么/why@KalmanHazins-我没有投反对票,但只是粘贴一些代码并没有多大帮助-几句关于这如何解决问题的话可以很好地教会一些人这是一个新手。@Uriagass我觉得很冷。:)他已经知道他想要什么,我只是让他通过了他的语法错误我没有投票,但代码不是用Ruby编写的,这可能会赢得否决票。显示一个有效的答案是可以的,但是显示一个有效的惯用答案是更好的。您能显示您试图创建的最终数组吗?Ruby没有2D数组(除非您进行扩展并包含
矩阵
),Ruby有数组数组。请提供一个您需要的结果示例。另外,请花时间格式化问题,使其更具可读性。难以阅读和理解的问题得到的帮助要少得多;人们把你的努力解释成他们愿意帮助我。我想解释一下为什么你不在标准库或任何其他库中考虑<代码>矩阵<代码>。这不符合你的想法。是否先检查生成的mat
?然后执行array
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"]]]