我正在尝试根据我的课程 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)。我该如何解决?
答案 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