RUBY中的“参数数量错误”错误

时间:2019-08-11 20:04:41

标签: arrays ruby

我正在尝试根据我的课程 Map 中的数据构建自定义字符串。

class Map
  def initialize
    @data = Array.new(3) { Array.new(3, 0) }
  end

  def [](x, y)
    @data[x][y]
  end

  def []=(x, y, value)
    @data[x][y] = value
  end
end

这是我尝试构建字符串的方法:

def build_map_str(map)
  str = ' '
  (0..2).each do |i|
    (0..2).each do |j|
      str += case map[i][j]
             when 0
               "◻️ "
             when 1
               "❎ "
             when 2
               "?️ "
             end
      str += '| ' if i != 2
    end
    str += "\n"
  end
end

这就是我所说的函数:

map = Map.new
str = build_map_str(map)

但是我在“ []”中得到了:错误的参数数量(给定1,预期为2)。我该如何解决?

2 个答案:

答案 0 :(得分:2)

给出您的操作员

  def [](x, y)
    @data[x][y]
  end

应该通过map[i,j]而不是map[i][j]访问地图元素。

答案 1 :(得分:0)

您对Map#[]的定义带有两个参数,因此,当您在build_map_str中调用它时,它应如下所示:

str += case map[i, j]

分配值时同样如此:

map[0, 0] = 0