我对Ruby知之甚少,无法找到创建二维数组的方法。任何人都可以提供一些片段或信息来帮助我入门吗?
答案 0 :(得分:22)
a = [[1, 2], [3, 4]]
a.each do |sub|
sub.each do |int|
puts int
end
end
# Output:
# 1
# 2
# 3
# 4
或:
a = [[1, 2], [3, 4]]
a.each do |(x, y)|
puts x + y
end
# Output:
# 3
# 7
答案 1 :(得分:12)
irb(main):001:0> a = []
=> []
irb(main):002:0> a1 = [1, 2]
=> [1, 2]
irb(main):003:0> a2 = [3, 4]
=> [3, 4]
irb(main):004:0> a.push a1
=> [[1, 2]]
irb(main):005:0> a.push a2
=> [[1, 2], [3, 4]]
irb(main):006:0> a
=> [[1, 2], [3, 4]]
irb(main):007:0> a[0]
=> [1, 2]
irb(main):008:0> a[0][1]
=> 2
答案 2 :(得分:10)
创建二维数组的最简单方法如下:
arr1 = Array.new(3) { Array.new(3)}
上面的代码创建了一个包含三行三列的2D数组。
干杯。
答案 3 :(得分:6)
Ruby没有像C那样的二维数组的概念。 Ruby中的数组是动态的 - 这意味着你可以用意志来调整它们的大小。它们可以包含每个“槽”中的任何对象或值 - 包括另一个Array!
在@JunaidKirkire和@simonmenke给出的示例中,您有一个数组,其数组包含其值。您可以使用类似于C的语法访问这些值 - 但您也可以使用一个插槽是一个数组而另一个只是一个数字,一个字符串或一个哈希...
您可能希望通过Ruby教程来更好地了解它的工作原理。我喜欢RubyMonk,但也有其他好的。
答案 4 :(得分:1)
对数组的添加将遵循以下格式[row] x [col]:
arr1 = Array.new(3) { Array.new(3)}
arr1[0][0] = 4
arr1[0][1] = 5
arr1[1][0] = 6
arr1[1][1] = 7
p arr1
=> [[4, 5, nil], [6, 7, nil], [nil, nil, nil]]
第二个约束完全是任意的,因为如果没有它,你可以使用锯齿状数组。取决于需要。
arr1 = Array.new(5) {Array.new()}
arr1[0][0] = 4
arr1[0][1] = 5
arr1[1][0] = 6
arr1[1][1] = 7
p arr1
=> [[4, 5], [6, 7], [], [], []]
arr1 = Array.new(5) {Array.new()}
arr1[0][0] = 4
arr1[0][1] = 5
arr1[1][0] = 6
arr1[1][1] = 7
arr1[1][2] = 8
arr1[1][5] = 9
p arr1
=> [[4, 5], [6, 7, 8, nil, nil, 9], [], [], []]