我对这个函数及其调用的方法做错了什么?
What am I doing incorrectly to my approach to this function & its call?
我有一个相当简单的嵌套 table Aurora64.Chat
包含几个函数(其中主要的 Aurora64
class 在别处初始化但为了完整性我将它插入这里):
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("[Aurora 64] " .. msg);
end
}
以上代码失败 (checked with the Lua Demo) 并出现以下情况:
input:14: '}' expected (to close '{' at line 3) near 'LogToSystem'
我已经追踪到 LogToSystem
函数及其用法(如果我删除该函数并使用一次,代码编译完美),我认为这与我的有关使用 use of concatenation(不是)。
我想我可能漏掉了一些简单的东西,但我 checked the documentation on functions 函数及其调用似乎写得正确。
我到底做错了什么?
您在 LogToSystem
之前缺少一个逗号,您需要稍微不同地定义它(通过添加 self
作为显式参数):
end,
LogToSystem = function(self, msg)
System.LogAlways("[Aurora 64] " .. msg);
end
}
无法将 obj:method
形式与分配给 table 字段的匿名函数一起使用;您只能使用 function obj:method
语法。
我有一个相当简单的嵌套 table Aurora64.Chat
包含几个函数(其中主要的 Aurora64
class 在别处初始化但为了完整性我将它插入这里):
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("[Aurora 64] " .. msg);
end
}
以上代码失败 (checked with the Lua Demo) 并出现以下情况:
input:14: '}' expected (to close '{' at line 3) near 'LogToSystem'
我已经追踪到 LogToSystem
函数及其用法(如果我删除该函数并使用一次,代码编译完美),我认为这与我的有关使用 use of concatenation(不是)。
我想我可能漏掉了一些简单的东西,但我 checked the documentation on functions 函数及其调用似乎写得正确。
我到底做错了什么?
您在 LogToSystem
之前缺少一个逗号,您需要稍微不同地定义它(通过添加 self
作为显式参数):
end,
LogToSystem = function(self, msg)
System.LogAlways("[Aurora 64] " .. msg);
end
}
无法将 obj:method
形式与分配给 table 字段的匿名函数一起使用;您只能使用 function obj:method
语法。