Lua是否支持装饰器?

nic*_*ckb 8 python syntax lua programming-languages decorator

我来自Python背景,非常喜欢Python装饰器的强大功能.

Lua是否支持装饰器?

我已阅读以下链接,但我不清楚:http: //lua-users.org/wiki/DecoratorsAndDocstrings

UPDATE

您是否也想过如果可能的话如何在Lua中实现它的示例.

Ale*_*lli 9

您引用的页面中记录的"装饰器"(例如在这个中用于添加类型检查)与Python的奇怪命名的"装饰器语法"几乎没有关系,用于应用更高阶函数的特定方法(HOF) ) - 相反,在Lua的wiki中描述和使用的装饰器是一个Lua成语,用于支持将装饰器设计模式应用于Lua函数(通过保持"额外属性" - 例如文档字符串,类型检查函数等) - 在单独的全球表).

Lua确实支持HOF(我不确定你是否可以将函数名称重新绑定到将HOF应用到函数的结果,但是你可以轻松地,如维基页面所示,使用匿名的"原始函数"并且仅使用anon函数将名称绑定到HOF的结果作为arg).

Python的"装饰器语法"语法糖很好(而且,令我惊讶的是,似乎大多数Python教徒将HOF的使用增加了一个数量级! - )但是没有什么内在或必不可少的东西,你不能做在Lua中(和Lua的匿名函数围绕Python的愚蠢运行,lambda无论如何都有限- 就像在Javascript中一样,它们具有基本相同的功能,和几乎相同的语法,作为"普通"命名函数! - ).

  • 您介意举一个如何在 Lua 中实现 HOF 的例子吗?谢谢 (2认同)
  • Lua中的函数是一等值.他们实际上根本没有名字.通过将名称存储在该名称的变量中,可以将名称"绑定"到函数中.因此,要重新绑定现有函数,只需替换其值,当然,如果需要,请小心保留对旧值的访问权限. (2认同)