【问题标题】:Ruby 2D indexerRuby 2D 索引器
【发布时间】:2013-11-08 11:59:57
【问题描述】:

如何使用以下类实现正确的 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)

[] 方法中。

【问题讨论】:

  • test[1] 应该返回什么?
  • @Stefan 二维网格的第二行。

标签: ruby arrays indexing


【解决方案1】:

我怀疑在 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], []]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 2017-09-05
    • 2023-03-30
    • 2017-07-30
    相关资源
    最近更新 更多