我对Lua Script完全不熟悉,我试图将索引值分配给空表中的索引,如下所示:
table = {}
table[6].id = 231
P.S。上面的代码是使用MOOSE Framework简化数字作战模拟器的更大脚本。
我收到以下日志消息:
... DCS:任务脚本错误:...尝试索引字段'?' (没有 值)
很抱歉,如果它看起来很愚蠢,但我无法找到它的问题。 我是否需要首先申报该表?
谢谢
答案 0 :(得分:3)
语法正确,但您正在访问nil值:table[6]
目前是nil
,因此您的代码会执行类似
nil.id = 231
这显然是不可能的。首先定义子表:
table = {}
table[6] = {}
table[6].id = 231
或使用子表的构造函数:
table = {}
table[6] = { id = 231 }
请注意,table是lua中预定义的库表,因此您应该使用其他名称。
答案 1 :(得分:1)
另一个答案是正确的,我建议你采取那里提出的方法。
您还可以使用元表来自动为未知索引创建表。
local create_unknown
create_unknown = {
__index = function(t,k)
if not rawget(t,k) then
rawset(t,k,setmetatable({},create_unknown))
end
return rawget(t,k)
end
}
tab = setmetatable({},create_unknown)
tab[6].id = 231
tab[6].what["is"].happening = 123
print(tab[6].id)
print(tab[6].what["is"].happening)