पुस्तक में, 'लिफ्ट' का एक उदाहरण है जहां एक प्रकार के साथ एक समारोह इस तरह से लिफ्ट कार्यान्वित किया जाता है: मेरे पास इसके बारे में कुछ भ्रम हैं: पहले एक है, यहां '_' क्या है? और दूसरी बात, जब मैं वापसी प्रकार को डीईफ़ से निकाल देता हूं, तो उसके जादू को करने के लिए प्रकार-अनुमान की उम्मीद है, मुझे निम्नलिखित अपवाद मिलता है: धन्यवाद < उस फ़ंक्शन का वापसी प्रकार (जो वापस किया जा रहा है) को या तो स्पष्ट रूप से वर्णित किया जाना चाहिए या निहित रूप से निर्धारित किया जाना चाहिए। लिखित रूप में लिखी गई संकलन का अनुमान लगाया जा सकता है कि एक वैकल्पिक रूप से, यहां आप स्पष्ट रूप से A = & gt; बी को बढ़ावा दिया जाता है
विकल्प [ए] = & gt; विकल्प [बी] ।
def लिफ्ट [ए, बी] (एफ: ए = & gt; बी): विकल्प [ए] = & gt; विकल्प [बी] = _ नक्शा f
scala & gt; डिफ लिफ्ट [ए, बी] (एफ: ए = & gt; बी) = _ नक्शा f & lt; कंसोल & gt;: 7: त्रुटि: विस्तारित फ़ंक्शन के लिए पैरामीटर प्रकार लापता ((x $ 1) => x $ 1.map (f)
लिफ्ट एक फ़ंक्शन है जो फ़ंक्शन देता है। फ़ंक्शन लिफ्ट एक मूल्य (अनाम) को फ़ंक्शन
f को उस मान पर लौटाता है उठाए जाने वाले अनाम नाम को
_ के रूप में संदर्भित किया जाता है। आप इसे निश्चित रूप से अधिक स्पष्ट नाम दे सकते हैं:
def लिफ्ट [ए, बी] (एफ: ए = & gt; बी): विकल्प [ए] = & gt; विकल्प [बी] = {मान = & gt; मूल्य का नक्शा f}
विकल्प [बी] (अधिक विशेष रूप से,
लिफ्ट फ़ंक्शन वापस कर रहा है
विकल्प [ए] = & gt ; विकल्प [बी] (स्पष्ट रूप से कहा गया है), जबकि उस फ़ंक्शन का रिटर्न टाइप
ऑप्शन [बी] है (निहित निहित))। उस प्रकार की जानकारी के बिना, संकलक को किसी अन्य संकेत की आवश्यकता होती है कि वापसी का प्रकार क्या है।
लिफ्ट को परिभाषित करें:
डीईफ़ लिफ्ट [ए, बी] (एफ: ए = & gt; बी) = {मान: विकल्प [ए] = & gt; मान नक्शा f}
मान के लिए प्रकार बता रहे हैं, और संकलक अनुमान लगा सकता है
विकल्प [बी] पर लौटा, क्योंकि
f: A = & gt; बी को
ए से
बी ,
लिफ्ट के लिए वापसी का प्रकार
होगा
विकल्प [ए] = & gt; विकल्प [बी] ।
No comments:
Post a Comment