在Lua语言中,我能够使用诸如
之类的东西在表中定义函数table = { myfunction = function(x) return x end }
我想知道我是否可以通过这种方式创建方法,而不必像
那样创建方法function table:mymethod() ... end
我相当有可能以这种方式添加方法,但我不确定这种技术的正确名称,我找不到它寻找“lua”和“方法”等。
我的目的是将表传递给myfunction({data= stuff, name = returnedName, ?method?init() = stuff})
等函数。
不幸的是,我尝试了几种冒号方法声明的组合,但它们都不是有效的语法。
所以...这里有人碰巧知道吗?
答案 0 :(得分:5)
当然:table:method()
只是table.method(self)
的语法糖,但您必须处理self
参数。如果你这样做
tab={f=function(x)return x end }
然后tab:f(x)
将无效,因为它实际上是tab.f(tab,x)
,因此将返回tab
而不是x
。