如何使用以下类实现正确的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)
在[]
方法中。
答案 0 :(得分: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], []]