16

我对 Ruby 知之甚少,无法找到创建二维数组的方法。谁能给我一些片段或信息让我开始?

4

5 回答 5

25
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
于 2012-10-13T17:41:25.247 回答
23

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

arr1 = Array.new(3) { Array.new(3)}

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

干杯。

于 2016-10-25T03:31:10.783 回答
13
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
于 2012-10-13T17:35:08.857 回答
7

Ruby 没有像 C 那样的二维数组的概念。Ruby 中的数组是动态的——这意味着您可以随意调整它们的大小。它们可以在每个“槽”中包含任何对象或值——包括另一个数组!

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

您可能需要通过 Ruby 教程来更好地了解它的工作原理。我喜欢RubyMonk,但也有其他不错的。

于 2012-10-13T17:48:05.433 回答
1

在 Ruby 中创建一个二维数组

在 ruby​​ 中,每个方法都接受一个块。

two_d_array = Array.new(3) do
  Array.new(3) do
    0
  end
end

同样可以写成单行(宏风格)

two_d_array = Array.new(3) { Array.new(3) { 0 } }

输出

[
 [0, 0, 0], 
 [0, 0, 0], 
 [0, 0, 0]
]

在 Ruby 中迭代二维数组

我可以想到三种方法。

1:使用 range

(0...two_d_array.size).each do |i|
  (0...(two_d_array[i].length)).each do |j|
    puts two_d_array[i][j]
  end
end

2:使用 for

for i in (0...two_d_array.size)
 for j in (0...two_d_array[i].length)
  puts two_d_array[i][j]
 end
end

三:使用 Each_with_index方法

two_d_array.each_with_index do |sub_array, i|
  sub_array.each_with_index do |item, j|
    puts two_d_array[i][j]
  end
end
于 2022-02-07T11:23:33.630 回答