我有一个相当简单的嵌套表Aurora64.Chat
,其中包含几个函数(其中主Aurora64
类在其他地方初始化,但为了完整性我将其插入此处):
Aurora64 = {};
Aurora64.Chat = {
entityId = 0;
Init = function()
local entity; --Big long table here.
if (g_gameRules.class == "InstantAction") then
g_gameRules.game:SetTeam(3, entity.id); --Spectator, aka neutral.
end
entityId = Entity.id;
self:LogToSystem("Created chat entity '" .. entity.name .. "' with ID '" .. entity.id .. "'. It is now available for use.");
end
LogToSystem = function(msg)
System.LogAlways("$1[Aurora 64]$2 " .. msg);
end
}
以上代码失败(checked with the Lua Demo),内容如下:
输入:14:'}'预期(在第3行关闭'{')'LogToSystem'附近
我已将其跟踪到LogToSystem
函数及其用法(如果我删除了函数并且一次使用它,代码编译完美),我认为这与我的使用有关use of concatenation(事实并非如此)。
我想我可能错过了一些简单的事情,但我checked the documentation on functions和功能&它的电话似乎写得很好。
我到底错在了什么?
答案 0 :(得分:1)
您在LogToSystem
之前缺少逗号,并且您需要稍微区别一点(通过添加self
作为显式参数):
end,
LogToSystem = function(self, msg)
System.LogAlways("$1[Aurora 64]$2 " .. msg);
end
}
无法将obj:method
形式与分配给表字段的匿名函数一起使用;您只能使用function obj:method
语法来使用它。