Lua中的方法声明

这两种声明方式在性能上有区别吗?

local object = newObject()

function object:method(params)
end

local object:method = function(params)
end

原文链接 https://stackoverflow.com/questions/6798526

点赞
stackoverflow用户734069
stackoverflow用户734069

是的,有区别。第二个不能编译。因此它的性能为零 ;)

在 Lua 中,“方法声明”只是语法糖。以下两种形式是相同的:

function object.func(self, param)
end

function object:func(param)
end

但是,如果在函数声明的一部分中命名函数,则仅使用语法糖。

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

或者换句话说,除非显式指定“ self”作为第一个参数,否则无法执行以下操作:

function object:func(param)
end
2011-07-23 06:30:40