这两种类型的声明在性能方面有什么区别吗?
local object = newObject()
function object:method(params)
end
local object:method = function(params)
end
答案 0 :(得分:7)
是的,有区别。第二个不编译。所以它的性能为零;)
“方法声明”只是Lua中的语法糖。这些是相同的:
function object.func(self, param)
end
function object:func(param)
end
但如果你将函数命名为函数声明的一部分,则只有 。
用于访问Lua中“方法”的':'语法仅适用于访问存储在表中的函数,这些函数由字符串键命名。您无法使用此语法来设置表的值。
或者,换句话说,没有其他办法可以做到这一点:
function object:func(param)
end
没有明确指定'self'参数作为第一个参数。