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

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

Player = {X_Pos = 1, Y_Pos = 1, Current_Sprite_Num = 100}

    for j=1, Max_col_length do --Max_col_length的值在此没有关系;无论如何都是正整数

        MapLayer_B[j] = {}

        for i=1, Max_row_length do --同上
            MapLayer_B[j][i] = 1
        end
    end

然后我尝试执行以下操作:

MapLayer_B [Player [X_Pos]] [Player [Y_Pos]] = Player [Current_Sprite_Num]

它应该替换 MapLayer_BPlayer [Y_Pos] 行表的第 Player [X_Pos] 个元素。但是,我在 LÖVE 编译器中得到了以下错误:

  • Error: attempt to index field '?' (a nil value)

我真的不明白为什么会发生这种情况,因为 MapLayer_BPlayer 表的所有元素都已经被声明,而且没有被保持在 nil 中。

有什么想法吗?

点赞
用户90511
用户90511

你需要使用 Player.X_Pos 替代 Player[X_Pos] 等等。

方括号的表示法会将 "X_Pos" 解释为变量并试图访问该键(错误的原因是未定义变量默认为 null)。

t = {a = 17}

print( t.a ) -- 点表示法更简单

print( t["a"] ) --方括号表示法期望一个字符串

key = "a" --可以通过该字符串使用变量
print( t[key] )
2013-08-14 21:38:17