本帖最后由 taroxd 于 2014-8-14 17:00 编辑
给你定义了一个多维数组玩玩(不检查错误,你愿意的话可以检查参数个数。现在多余的参数会被丢弃。)
each 之类的方法也很容易加上的
class MultiArray def initialize(dimention = 2) @dimention = dimention @data = [] end def [](first, *indice) return @data[first] if @dimention == 1 row(first)[*indice] end def []=(first, *indice, value) return @data[first] = value if @dimention == 1 row(first)[*indice] = value end private def row(i) @data[i] ||= MultiArray.new(@dimention - 1) end end arr = MultiArray.new(3) arr[0,1,2] = 3 p arr[0,1,2] #=> 3 p arr[1,2,3] #=> nil
class MultiArray
def initialize(dimention = 2)
@dimention = dimention
@data = []
end
def [](first, *indice)
return @data[first] if @dimention == 1
row(first)[*indice]
end
def []=(first, *indice, value)
return @data[first] = value if @dimention == 1
row(first)[*indice] = value
end
private
def row(i)
@data[i] ||= MultiArray.new(@dimention - 1)
end
end
arr = MultiArray.new(3)
arr[0,1,2] = 3
p arr[0,1,2] #=> 3
p arr[1,2,3] #=> nil
|