【发布时间】:2018-06-11 20:11:36
【问题描述】:
上下文:我尝试使用 while 循环填充 2D 数组,之后我想尝试使用 {} 块格式。关键是要了解这两种语法结构如何做同样的事情。
在过去的一个小时里,我一直在查看这段代码并在互联网上搜索,我认为我根本没有得到任何东西,但我不明白那是什么。
结果应该是
=> [["A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8"]
=> ..(Sequentially)..
=>["H1", "H2", "H3", "H4", "H5", "H6", "H7", "H8"]]
代码如下:
char= ('A'..'H').to_a
num= (1..8).to_a
arr=Array.new(8,Array.new(8))
x=0
while x <8
y=0
while y < 8
arr[x][y] = char[x] + num[y].to_s
y+=1
end
x+=1
end
arr
提前感谢您,感谢您的耐心和时间。
####Edit####
造成混淆的原因是对参考概念缺乏理解。引用允许我们通过使用 Array.new(n,Array.new(n)) 方法方案来访问嵌套数组的值,这些嵌套数组通过其父数组共享对其数据的引用。这个问题在这里直接解决:Creating matrix with `Array.new(n, Array.new)`。虽然我认为这是我的 while 循环的问题,但问题确实是我如何创建矩阵。
【问题讨论】:
-
执行摘要:你几乎永远不会说
Array.new(8, Array.new(8)),因为你最终会共享引用,你几乎总是想要Array.new(8) { Array.new(8) },以便内部数组是不同的数组。
标签: ruby multidimensional-array while-loop