"पारदर्शी 'पास-थ्रू' फ़ंक्शन रैपर" से मेरा क्या अभिप्राय है, इसे कहते हैं wrapper
, जो इसके सभी तर्क को किसी अन्य फ़ंक्शन में पास करने से परिणाम देता है, चलो इसे कॉल करें wrappee
।
यह Emacs Lisp में कैसे किया जाता है?
एनबी: आदर्श wrapper
फ़ंक्शन फ़ंक्शन के हस्ताक्षर के बारे में अज्ञेयवादी हैwrappee
; अर्थात यह संख्या, स्थिति, नाम, आदि के wrappee
तर्कों के बारे में कुछ नहीं जानता है; यह सिर्फ अपने सभी तर्कों को पास करता है wrappee
, जैसे कि wrappee
मूल रूप से बुलाया गया था। (हालांकि, कॉल को कॉल के wrapper
साथ बदलने के लिए कॉल स्टैक के साथ गड़बड़ करने की कोई आवश्यकता नहीं है wrappee
।)
मैंने अपने प्रश्न का आंशिक उत्तर पोस्ट किया :
(defun wrapper (&rest args) (apply 'wrappee args))
यह केवल काम करता है जब wrappee
है नहीं इंटरैक्टिव। जाहिरा तौर पर, जिस तरह से इंटरेक्टिव फ़ंक्शन उनके तर्क प्राप्त करते हैं वह एक अलग "चैनल" का प्रतिनिधित्व करता है जो कि (&rest args)
भस्म से ढंका होता है । मुझे अभी भी wrappee
जिस चीज की आवश्यकता है, वह (&rest args)
उस मामले के लिए हस्ताक्षर का समान रूप से-समरूप प्रतिपक्ष है जहां wrappee
एक संवादात्मक कार्य है।
(यह सवाल इस पहले के प्रश्न में वर्णित एक समस्या से प्रेरित था ।)
आगे जो मैं पूछ रहा हूँ, उसके स्पष्टीकरण की आवश्यकता है, नीचे कुछ उदाहरण दिए गए हैं, जो मैं के बाद पायथन और जावास्क्रिप्ट समकक्ष दिखा रहा हूँ।
पायथन में इस तरह के आवरण को लागू करने के लिए कुछ मानक तरीके नीचे दिखाए गए हैं:
def wrapper(*args, **kwargs):
return wrappee(*args, **kwargs)
# or
wrapper = lambda *args, **kwargs: wrappee(*args, **kwargs)
(यहां *args
"सभी स्थिति तर्क" **kwargs
के लिए खड़ा है , और "सभी कीवर्ड तर्क" के लिए खड़ा है।)
जावास्क्रिप्ट समकक्ष कुछ इस तरह होगा:
function wrapper () { return wrappee.apply(this, arguments); }
// or
wrapper = function () { return wrappee.apply(this, arguments); }
रिकॉर्ड के लिए, मैं असहमत हूं कि यह प्रश्न कई तर्कों के साथ फ़ंक्शन में मैपकार को कैसे लागू किया जाए, इसका एक डुप्लिकेट है । मुझे यह समझाने में नुकसान हो रहा है कि, चूंकि दो प्रश्न मेरे लिए इतने स्पष्ट रूप से भिन्न हैं। यह पूछा जा रहा है कि "समझाएं कि एक सेब को नारंगी के बराबर क्यों नहीं माना जाना चाहिए"। मात्र प्रश्न इतना पागल है, कि एक संदेह कभी भी एक जवाब के साथ आ सकता है जो इसे पूछने वाले व्यक्ति को संतुष्ट करेगा।
advice
सामान समस्याग्रस्त लगता है जो मैं इसके बारे में स्पष्ट नहीं रहूंगा। वास्तव में, इस सवाल के लिए प्रेरणा एक अन्यथा
interactive
युक्ति प्रदान करने की आवश्यकता है ।