2010-09-04 14 views
8

मैं एक पायथन पृष्ठभूमि से आया हूं और वास्तव में पाइथन सजावट की शक्ति की तरह हूं।क्या लुआ सजावट करने वालों का समर्थन करता है?

क्या लुआ सजावट करने वालों का समर्थन करता है?

मैं नीचे दिए गए लिंक पढ़ा है, लेकिन यह मेरे लिए स्पष्ट नहीं है: http://lua-users.org/wiki/DecoratorsAndDocstrings

अद्यतन

आप भी एक उदाहरण है कि कैसे लुआ में इसे लागू करने के लिए कैसे करता है, तो यह संभव है को देखते हुए कोई एतराज़ है।

+1

लुआ फ़ंक्शन के आसपास के साथ-साथ पाइथन कर सकते हैं; इसके लिए सिर्फ एक विशेष वाक्यविन्यास नहीं है, क्योंकि लुआ का लक्ष्य बहुत ही बुनियादी कोर वाक्यविन्यास है (एक गलती के लिए, क्योंकि इसमें 'जारी रखने' और '+ =' जैसी मूलभूत चीज़ों की कमी है। –

उत्तर

9

आपके द्वारा उद्धृत पृष्ठ पर प्रलेखित "सजावटी" (उदाहरण के लिए this one में टाइप-चेकिंग जोड़ने के लिए उपयोग किया जाता है) उच्च-ऑर्डर लागू करने के लिए एक विशिष्ट तरीके से पाइथन के अजीब-नामित "सजावटी वाक्यविन्यास" के साथ बहुत कम करना है फ़ंक्शन (एचओएफ) - बल्कि, लुआ के विकी में वर्णित और उपयोग किए जाने वाले सजावटी लूआ फ़ंक्शन में Decorator Design Pattern के अनुप्रयोग का समर्थन करने के लिए लुआ मुहावरे हैं ("अतिरिक्त विशेषताओं" को पकड़कर - जैसे डॉकस्ट्रिंग, टाइपशेकिंग फ़ंक्शन इत्यादि - अलग वैश्विक टेबल)।

लुआ समर्थन HOFs करता है (मुझे यकीन है कि अगर आप कार्य करने के लिए एक HOF लागू करने के परिणाम के एक समारोह के नाम फिर से बाध्य कर सकते हैं नहीं कर रहा हूँ, लेकिन आप आसानी से कर सकते हैं, के रूप में विकी पृष्ठों दिखाने के लिए, एक गुमनाम का उपयोग "मूल कार्य" और केवल एचओएफ के परिणाम के लिए एक नाम बांधें जो कि एनन फ़ंक्शन के रूप में कार्य करता है)।

पायथन का "सजावटी वाक्यविन्यास" वाक्यविन्यास चीनी अच्छा है (और, मेरे आश्चर्य की बात है कि, अधिकांश पाइथोनिस्टस द्वारा एचओएफ के उपयोग में वृद्धि हुई है! -), लेकिन उनके बारे में आंतरिक या आवश्यक कुछ भी नहीं है लुआ में नहीं कर सकते (और लुआ के अज्ञात फ़ंक्शन पाइथन के गूढ़ के आसपास सर्कल चलाते हैं, lambda सीमित हैं - बस जावास्क्रिप्ट की तरह, उनके पास अनिवार्य रूप से एक ही शक्ति है, और "सामान्य" नामित फ़ंक्शन के रूप में बहुत अधिक वाक्यविन्यास है! -)।

+1

आपको लुआ में एचओएफ को कार्यान्वित करने के तरीके पर एक उदाहरण देना होगा। धन्यवाद – nickb

+1

@user, आपके द्वारा उद्धृत विकी पेज ऐसे उदाहरणों से भरा है - फ़ंक्शंस तर्क और/या फ़ंक्शन परिणाम लौटने वाले कार्यों (यह एक उच्च-आदेश फ़ंक्शन, उर्फ ​​एचओएफ, ** ** है, परिभाषा के अनुसार ;-) । मुझे नहीं लगता कि मुझमें से किसी भी उदाहरण या विविधताओं की प्रतिलिपि बनाने और चिपकाने में कोई अतिरिक्त मूल्य होगा! –

+2

लुआ में कार्य प्रथम श्रेणी के मूल्य हैं। उनके पास वास्तव में नाम नहीं हैं। आप उस नाम के एक चर में संग्रहीत करके एक फ़ंक्शन में एक नाम "बाध्य" करते हैं। इसलिए किसी मौजूदा फ़ंक्शन को पुनर्विचार करने के लिए, यदि आप आवश्यक हो तो पुराने मूल्य तक पहुंच बनाए रखने के लिए सावधान रहना, इसके मूल्य को प्रतिस्थापित करें। – RBerteig

संबंधित मुद्दे