【发布时间】:2011-07-23 05:54:13
【问题描述】:
这两种声明在性能方面有什么区别吗?
local object = newObject()
function object:method(params)
end
local object:method = function(params)
end
【问题讨论】:
标签: function methods lua declaration
这两种声明在性能方面有什么区别吗?
local object = newObject()
function object:method(params)
end
local object:method = function(params)
end
【问题讨论】:
标签: function methods lua declaration
是的,有区别。第二个没有编译。所以它的性能为零;)
“方法声明”只是 Lua 中的语法糖。这些是相同的:
function object.func(self, param)
end
function object:func(param)
end
但是,如果您将函数命名为函数声明的一部分,那么这种糖只有有效。
在 Lua 中访问“方法”的 ':' 语法仅适用于访问存储在表中的函数,这些函数由字符串键命名。您不能使用此语法来设置表的值。
或者,换句话说,没有其他方法可以做到这一点:
function object:func(param)
end
没有明确指定“self”参数作为第一个参数。
【讨论】: