在python中强大的decorator可以发挥很大的作用,而lua中的first-class function想来一定可以实现类似的东西,在lua wiki上有一篇文章专门讲解了lua中的decorator实现(http://lua-users.org/wiki/DecoratorsAndDocstrings),本文在此基础上做了一些简单的扩展。
首先在python中,decorator更像是一种语法糖,比如:
@dec2
@dec1
def foo():
pass
实际上等价于 foo = dec2(dec1(foo)),另一种更复杂的写法:
@dec2(a, b)
@dec1
def foo():
pass
也等价于 foo = dec2(a, b)(dec1(foo))
根据这样的语义在lua中实现decorator并不难,但是在lua中并不支持类似 @dec这样的语法,我们需要定义新的运算符完成语义
比如采用“..”,所以可能看起来像这样:
local foo =
dec2(