0

如何使用以下类实现正确的 2D 索引器?以下是我的第一张照片

class MyArray

  #init 2D array, set all elements at 0
  def initialize(size)
    @array = []
    0.upto(size - 1) {|x|
      @array[x] = []
      0.upto(size - 1) {|y|
        @array[x][y] = 0
      }
    }
  end

  def [](*args)
    @array[args[0]][args[1]]
  end

  def []=(*args)
    @array[args[0]][args[1]] = args[2]
  end

end

它适用于

test = MyArray.new(3)
test[1, 1] = 5

但我想让它也适用于

test[1][1] = 5

现在给出了编译错误

在 `[]' 中:没有从 nil 到整数的隐式转换(TypeError)

[]方法中。

4

1 回答 1

2

我怀疑在 Ruby 中是否需要一个类来完成该任务。创建和索引一个 2d 数组是 ruby​​ 非常简单的:

1.9.3p194 :001 > a = Array.new(3){[]}  #create a array with 3 rows
 => [[], [], []]  
1.9.3p194 :002 > a[1][2]=3             #assignment
 => 3 
1.9.3p194 :003 > a[1][2]               #index 
 => 3 
1.9.3p194 :004 > a
 => [[], [nil, nil, 3], []]
于 2013-10-29T12:39:47.913 回答