8


2

Luaはデコレータをサポートしていますか?

私はPythonのバックグラウンドを持っており、Python Decoratorsの力が本当に好きです。

Luaはデコレータをサポートしていますか?

私は次のリンクを読みましたが、私にはわかりません:http://lua-users.org/wiki/DecoratorsAndDocstrings

更新

また、可能な場合にLuaでそれを実装する方法の例を挙げていただけますか。

1 Answer


9


引用するページに記載されている(および、たとえばhttp://lua-users.org/wiki/LuaTypeChecking[this one]でタイプチェックを追加するために使用されている) "decorators"は、Pythonの奇妙な "decorator"とはほとんど関係ありません。高次関数(HOF)を適用する特定の方法の構文」-むしろ、Luaのwikiで説明および使用されているデコレータは、http://en.wikipedia.org/wiki/のアプリケーションをサポートするLuaイディオムですDecora_pattern [Decorator Design Pattern]をLua関数に(「余分な属性」-docstring、型チェック関数など-を個別のグローバルテーブルに保持することにより)。

LuaはHOFをサポートしています(HOFを関数に適用した結果に関数名を再バインドできるかどうかはわかりませんが、Wikiページが示すように、匿名の「元の関数」のみを簡単に使用できます。 argとしてそのanon関数を使用して、HOFの結果に名前をバインドします。

Pythonの「デコレータ構文」構文シュガーは素晴らしい(そして、驚いたことに、ほとんどのPythonistaでHOFの使用が桁違いに増えたようです!-)が、それに対して本質的または本質的なことは何もできませんLuaで(およびLuaの匿名関数は、Pythonのグーフィーの周りを循環しますが、とにかく「ラムダ」を制限します-Javascriptのように、「通常の」名前付き関数と本質的に同じパワーとほぼ同じ構文を持っています!-)