【问题标题】:Method declaration in LuaLua 中的方法声明
【发布时间】:2011-07-23 05:54:13
【问题描述】:

这两种声明在性能方面有什么区别吗?

local object = newObject()

function object:method(params)
end

local object:method = function(params)
end

【问题讨论】:

    标签: function methods lua declaration


    【解决方案1】:

    是的,有区别。第二个没有编译。所以它的性能为零;)

    “方法声明”只是 Lua 中的语法糖。这些是相同的:

    function object.func(self, param)
    end
    
    function object:func(param)
    end
    

    但是,如果您将函数命名为函数声明的一部分,那么这种糖只有有效。

    在 Lua 中访问“方法”的 ':' 语法仅适用于访问存储在表中的函数,这些函数由字符串键命名。您不能使用此语法来设置表的值。

    或者,换句话说,没有其他方法可以做到这一点:

    function object:func(param)
    end
    

    没有明确指定“self”参数作为第一个参数。

    【讨论】:

    • 谢谢!我在据称可靠的资源上阅读了这篇文章,应该自己尝试过。那里很幽默:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多