在Ruby中创建和迭代2d数组

Ale*_*lex 13 ruby arrays multidimensional-array

我对Ruby知之甚少,无法找到创建二维数组的方法.任何人都可以提供一些片段或信息来帮助我入门吗?

sim*_*nke 23

a = [[1, 2], [3, 4]]
a.each do |sub|
  sub.each do |int|
    puts int
  end
end
# Output:
#   1
#   2
#   3
#   4
Run Code Online (Sandbox Code Playgroud)

要么:

a = [[1, 2], [3, 4]]
a.each do |(x, y)|
  puts x + y
end
# Output:
#   3
#   7
Run Code Online (Sandbox Code Playgroud)

  • 第二种形式非常好.它在哪里记录? (2认同)

Jun*_*ire 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
Run Code Online (Sandbox Code Playgroud)

  • 关于创建二维数组的很好的解释,但我似乎没有回答有关迭代二维数组的问题的第二部分。目前,完整的答案意味着您应该阅读此答案和 simonmenke 答案 - 这可能会令人困惑。:) (2认同)

Alf*_*ara 11

创建二维数组的最简单方法如下:

arr1 = Array.new(3) { Array.new(3)}
Run Code Online (Sandbox Code Playgroud)

上面的代码创建了一个包含三行三列的二维数组.

干杯.


dpa*_*age 6

Ruby没有像C那样的二维数组的概念.Ruby中的数组是动态的 - 这意味着你可以用意志来调整它们的大小.它们可以包含每个"槽"中的任何对象或值 - 包括另一个Array!

在@JunaidKirkire和@simonmenke给出的示例中,您有一个数组,其数组包含其值.您可以使用类似于C的语法访问这些值 - 但您也可以使用一个插槽是一个数组,另一个只是一个数字,一个字符串或一个哈希的情况......

您可能希望通过Ruby教程来更好地了解它的工作原理.我喜欢RubyMonk,但也有其他好的.