Lua поддерживает декораторы? - PullRequest
       19

Lua поддерживает декораторы?

8 голосов
/ 04 сентября 2010

Я родом из Python, и мне действительно нравится мощь Python Decorators.

Поддерживает ли Lua декораторы?

Я прочитал следующую ссылку, но мне неясно: http://lua -users.org / wiki / DecoratorsAndDocstrings

UPDATE

Не могли бы вы привести пример, как реализовать это в Lua, если это возможно.

1 Ответ

9 голосов
/ 04 сентября 2010

«Декораторы», задокументированные на цитируемой вами странице (и используемые, например, в на этой для добавления проверки типов), имеют мало общего с нечетным названием Python «синтаксис декоратора» для конкретного способаприменить функцию высшего порядка (HOF) - скорее, декораторы, описанные и используемые в вики Lua, являются идиомой Lua для поддержки применения Pattern Design Pattern к функциям Lua (удерживая «дополнительные атрибуты»)."- например, строки документации, функции проверки типов и т. д. - в отдельных глобальных таблицах.

Lua поддерживает HOF (я не уверен, что вы можете повторно привязать имя функции к результату примененияПодсказка к функции, но вы можете легко, как показывают вики-страницы, использовать анонимную «исходную функцию» и привязывать только имя к результату HOF с этой аноновой функцией в качестве аргумента).

Синтаксис «синтаксиса декоратора» в Python хорош (и, к моему удивлению, кажется, увеличил использование HOF большинством Pythonistas на порядок! -), но tв них нет ничего внутреннего или существенного, что вы не можете сделать в Lua (а анонимные функции Lua в любом случае вращаются вокруг глупого Python, ограниченного lambda) - как и в Javascript, они имеют практически одинаковую мощность и почти одинаковуюсинтаксис, как «нормальная» именованная функция! -).

...