Methods 将Lua方法定义为初始化
在Lua语言中,我能够在表中定义函数,例如Methods 将Lua方法定义为初始化,methods,lua,initializer,Methods,Lua,Initializer,在Lua语言中,我能够在表中定义函数,例如 table = { myfunction = function(x) return x end } 我想知道我是否可以用这种方式创建方法,而不是像这样做 function table:mymethod() ... end 我相当肯定可以通过这种方式添加方法,但我不确定这种技术的正确名称,我也找不到它在寻找“lua”和“methods”之类的东西 我的意图是将一个表传递给一个函数,比如myfunction({data=stuff,name=retur
table = { myfunction = function(x) return x end }
我想知道我是否可以用这种方式创建方法,而不是像这样做
function table:mymethod() ... end
我相当肯定可以通过这种方式添加方法,但我不确定这种技术的正确名称,我也找不到它在寻找“lua”和“methods”之类的东西
我的意图是将一个表传递给一个函数,比如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
你可以看看手术室。哦,它很管用。。。有一次,我在寻找一个复杂的解决方案,其实很简单。啊哼。谢谢!只是一个注释-在创建“方法”时,第一个参数通常命名为“self”。函数选项卡:method()语法糖就是这样做的。如果要通过“:”调用它,请创建如下函数:tab={f=function(self,x)return x end}并作为tab:f(x)调用。