我对这个功能和方法的看法不正确它的电话?

时间:2016-06-30 11:19:44

标签: lua lua-table wildfire-api

我有一个相当简单的嵌套表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和功能&它的电话似乎写得很好。

我到底错在了什么?

1 个答案:

答案 0 :(得分:1)

您在LogToSystem之前缺少逗号,并且您需要稍微区别一点(通过添加self作为显式参数):

    end,

    LogToSystem = function(self, msg)
        System.LogAlways("$1[Aurora 64]$2 " .. msg);
    end
}

无法将obj:method形式与分配给表字段的匿名函数一起使用;您只能使用function obj:method语法来使用它。