उदाहरण के लिए:

const factory = {
    myFunc(str1) {
    console.log(str1)
    return (comp) => {
        return comp;
    }
  }
}

console.log(factory.myFunc("foo")("bar"));

MyFunc के चार कोष्ठक हैं: factory.myFunc("foo")("bar")

आप ऐसे समारोह को कैसे कहते हैं?

0
Remi 2 फरवरी 2020, 20:07

3 जवाब

सबसे बढ़िया उत्तर

इसे function currying कहते हैं।

वास्तव में इसे पढ़ें जैसे factory.myFunc("foo") एक फ़ंक्शन लौटा रहा है (x कहें) और उस फ़ंक्शन को तुरंत "बार" तर्क (जैसे x ("बार")) के साथ कॉल कर रहा है।

2
sivako 2 फरवरी 2020, 20:14

मुझे नाम के बारे में पता नहीं है, लेकिन आप जो वर्णन कर रहे हैं वह वास्तव में दो अलग-अलग कार्य हैं। myFunc बस एक और फ़ंक्शन देता है।

लाइन factory.myFunc("foo")("bar") पहले पैरामीटर के रूप में foo के साथ myFunc funtion चलाती है, यह एक और फ़ंक्शन देता है, जिसे तुरंत पैरामीटर bar के साथ चलाया जाता है।

0
Djonn 2 फरवरी 2020, 20:17

myFunc को कॉल करने के लिए 2 कोष्ठक और 1 तर्क लेता है, आपको अन्य 2 कोष्ठक और 1 तर्क की आवश्यकता होती है जो फ़ंक्शन को वापस लौटाता है।

कॉल के इस क्रम को आमतौर पर फ़ंक्शन कॉल की चेनिंग कहा जाता है। कभी-कभी, क्रियाओं के इस क्रम को पाइप भी कहा जाता है।

currying जैसे एक शब्द भी है, लेकिन मैं कहूंगा कि यह एक विशेष तरीके से कार्यों को घोषित करने की एक तकनीक का वर्णन करता है जो आपको तर्क 1 से 1 पारित करने में सक्षम बनाता है।

इस मामले में, हालांकि, मैं यह नहीं कहूंगा कि यह करी है क्योंकि myFunc कुछ ऐसा करता है जिसका कोई लेना-देना नहीं है कि करी करते समय क्या लौटाया गया कार्य करता है (जैसा कि उदाहरण के लिए लोडाश में समझा जाता है) सभी मध्यवर्ती फ़ंक्शन कॉल केवल के लिए काम करते हैं तर्क पारित करना जबकि सभी तर्कों को इकट्ठा करने के बाद कुछ वास्तविक कार्य करने वाला एकमात्र कार्य अंतिम है।

मैं myFunc को केवल factory की "विधि" कहूंगा।

जैसा कि @ASDFfgerte सही ढंग से टिप्पणी में बताता है, यह एक उच्च क्रम फ़ंक्शन भी है।

0
Igor Bykov 2 फरवरी 2020, 20:54