Lua中的方法声明
这两种类型的声明在性能方面有什么区别吗?
local object = newObject()
function object:method(params)
end
local object:method = function(params)
end
Is there any difference between these two types of declarations performance-wise?
local object = newObject()
function object:method(params)
end
local object:method = function(params)
end
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,有区别。第二个无法编译。所以它的性能为零;)
“方法声明”只是 Lua 中的语法糖。它们是相同的:
但是,只有当您将函数命名为函数声明的一部分时,该糖才有效。
Lua 中访问“方法”的“:”语法仅适用于访问存储在表中、由字符串键命名的函数。您不能使用此语法来设置表的值。
或者,换句话说,没有其他方法可以做到这一点:
无需显式指定“self”参数作为第一个参数。
Yes, there is a difference. The second one doesn't compile. So it has zero performance ;)
A "method declaration" is just syntactical sugar in Lua. These are identical:
But that sugar only works if you are naming the function as part of the function declaration.
The ':' syntax for accessing "methods" in Lua only works for accessing functions that are stored in a table, named by a string key. You cannot use this syntax to set the value of a table.
Or, to put it another way, there is no other way to do this:
without explicitly specifying a 'self' parameter as the first parameter.