无法使用另一个表中的数字声明表元素

时间:2013-08-14 21:36:43

标签: arrays lua null lua-table love2d

代码非常简单。声明两个表,一个简单的和多维的:

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_BPlayer表的所有元素都被声明,而不是以nil保存。

有什么想法吗?

1 个答案:

答案 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] )