Lua支持装饰器吗?

我来自 Python 的背景,喜欢 Python Decorators 的强大功能。

Lua 支持 Decorators 吗?

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

更新

如果可能的话,您也介意给出一个如何在 Lua 中实现它的示例。

原文链接 https://stackoverflow.com/questions/3640536

点赞
stackoverflow用户95810
stackoverflow用户95810

你引用的页面中所记录的“装饰器”(例如此页面中的类型检查)与 Python 中奇怪的“装饰器语法”(用于特定方式的高阶函数)无关。相反,Lua wiki 中描述和使用的装饰器是 Lua 语言中支持将额外属性(如文档字符串、类型检查函数等)存储在全局表中以应用 装饰器设计模式 到 Lua 函数的一种惯用法。

Lua 也支持高阶函数(我不确定是否可以将一个函数名重新绑定为将高阶函数应用于函数的结果,但你可以像 wiki 页面所示那样轻松地使用匿名的“原始函数”,然后只将一个名称绑定到 HOF 的结果,并将该匿名函数作为参数)。Python 的装饰器语法糖很不错(令人惊讶的是,它似乎将大多数 Python 家族的 HOF 使用增加了一个数量级!-),但没有任何本质或必要性质,你不能在 Lua 中完成(而且 Lua 的匿名函数比 Python 的古怪而受限的 lambda 函数更加强大——就像在 Javascript 中一样,它们具有基本相同的功 能,并几乎与“普通”命名函数具有相同的语法!-)。

2010-09-04 01:56:27