Lua中如何结合冒号与方括号调用带self参数的随机方法?
解决方案
直接通过字符串获取方法后,手动将Object作为第一个参数传入即可,这是Lua中冒号调用语法糖的本质实现:
-- 方式1:拆分步骤,更清晰 local method_name = pickrand() Object[method_name](Object) -- 方式2:一行完成调用 Object[pickrand()](Object)
为什么之前的写法报错?
Object:[pickrand()]()不是Lua的合法语法,冒号运算符后面必须跟标识符,不能直接放表达式;Object:pickrand()()试图调用Object的pickrand方法,但pickrand是全局函数,并未挂载到Object上,自然会报错。
内容的提问来源于stack exchange,提问作者Lesbiswan
相关产品推荐
相关产品推荐

