Lua能否定义带隐式self参数的匿名成员函数?
Lua匿名函数的隐式self参数与协程成员函数实现
关于匿名函数的隐式self参数
Lua的:语法糖仅适用于带名字的成员函数定义,匿名函数不支持这种隐式传入self的写法——你必须在匿名函数的参数列表里显式写出self,原生语法里没有可以省略它的途径。
协程成员函数的一行实现方案
如果想要一行完成协程成员函数的声明,最直接的写法就是显式指定self的版本:
Foo = {} Foo.bar = coroutine.wrap(function(self) -- 这里编写协程逻辑,self对应调用时的实例 print("调用协程成员函数,self:", self) end)
要是你想更贴近普通:语法糖的风格,也可以把逻辑写得更紧凑(本质还是显式声明self):
Foo = {} Foo.bar = coroutine.wrap(function(self) -- 协程执行代码 end)
你之前提到的两步写法(先定义普通成员函数再用coroutine.wrap包裹)完全可行,但如果追求一行完成,显式声明self的匿名函数版本是原生Lua里的最优解——毕竟Lua没有为匿名函数提供隐式self的语法糖支持。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

