代码非常简单。声明两个表,一个简单的和多维的:
Player = {X_Pos = 1, Y_Pos = 1, Current_Sprite_Num = 100}
for j=1, Max_col_length do -- value ofMax_col_length doesn't matter here; positive integer anyway
MapLayer_B[j] = {}
for i=1, Max_row_length do --same here
MapLayer_B[j][i] = 1
end
end
然后我尝试做这个操作:
MapLayer_B[Player[X_Pos]][Player[Y_Pos]] = Player[Current_Sprite_Num]
它应该替换Player[X_Pos]
中Player[Y_Pos]
行表的MapLayer_B
元素。相反,我在LÖVE编译器中遇到了这个错误:
我真的不知道,为什么会这样,因为MapLayer_B
和Player
表的所有元素都被声明,而不是以nil保存。
有什么想法吗?
答案 0 :(得分:2)
您需要使用Player.X_Pos
代替Player[X_Pos]
,依此类推。
括号表示法将“X_Pos”解释为变量并尝试访问taht键(错误的原因是未定义的变量默认为null)
t = {a = 17}
print( t.a ) --dot notation is simpler
print( t["a"] ) --bracket notation expects a string
key = "a" --that string can be from a variable
print( t[key] )