gpt4 book ai didi

methods - 将 Lua 方法定义为初始化

转载 作者:行者123 更新时间:2023-12-02 05:18:20 25 4
gpt4 key购买 nike

在 Lua 语言中,我可以在表中定义函数,例如

table = { myfunction = function(x) return x end }

我想知道是否可以通过这种方式创建方法,而不必这样做

function table:mymethod() ... end

我相当确定可以通过这种方式添加方法,但我不确定该技术的正确名称,并且我无法找到它来寻找“lua”和“方法”等。

我的目的是将表传递给函数,例如 myfunction({data= stuff, name = returnedName, ?method?init() = stuff})

不幸的是,我尝试了几种与冒号方法声明的组合,但没有一个是有效的语法。

那么……这里有人知道吗?

最佳答案

当然:table:method()只是 table.method(self) 的语法糖,但你必须照顾 self争论。如果你这样做

tab={f=function(x)return x end }

然后tab:f(x)不起作用,因为这实际上是 tab.f(tab,x)因此将返回 tab而不是x .

您可以查看 lua users wiki on object orientationPiL chapter 16 .

关于methods - 将 Lua 方法定义为初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com