Lua中如何用括号调用冒号函数

我已经研究了一段时间,但一直没有找到解决方法。 我想像调用普通函数一样动态调用Lua中的冒号函数。

obj['functionName']()

但以下内容无法工作。

obj:['functionName']()

是否有解决方法?我是否需要显式将obj添加到函数参数中? 除非必须这样做,否则我不想这样做... 即:

obj['functionName'](obj)

谢谢!

点赞
用户1442917
用户1442917

你可以使用 obj:functionName(),但如果你所谓的 "动态" 意味着 functionName 存储在变量中,那么 fn = 'functionName'; obj[fn](obj) 是唯一的方法。

2017-06-14 02:05:35
用户1130744
用户1130744

“obj:function()”语法(如lua文档中定义的)是“syntactical sugar”(语法糖), 表示obj.function(obj)的简写形式。因此,不,没有办法绕过这个。这种语法糖是针对非常特定的情况设计的。

2017-06-14 09:46:13