मैं यह समझने की कोशिश कर रहा हूं कि कई प्रकार के पैरामीटर (जैसे int और int64) पर काम करने वाले फ़ंक्शन को कैसे परिभाषित किया जाए। जैसा कि मैं इसे समझता हूं, एफ # में फ़ंक्शन अधिभार संभव नहीं है (निश्चित रूप से संकलक शिकायत करता है)। उदाहरण के लिए निम्नलिखित कार्य करें।जेनेरिक पैरामीटर प्रकारों के साथ कार्य
let sqrt_int = function
| n:int -> int (sqrt (float n))
| n:int64 -> int64 (sqrt (float n))
निश्चित रूप से संकलक शिकायत है कि वाक्य रचना, अवैध है (पैटर्न मिलान में प्रकार की कमी समर्थित नहीं हैं ऐसा लगता है), हालांकि मैं इस दिखाता है मैं प्राप्त करने के लिए चाहते हैं क्या सोचते हैं: एक समारोह है कि कई पैरामीटर प्रकार पर चल रही है और अनुसार प्रकार का एक मूल्य देता है। मुझे एहसास है कि सामान्य प्रकार/प्रकार अनुमान/पैटर्न मिलान के कुछ संयोजन का उपयोग करके एफ # में यह संभव है, लेकिन वाक्यविन्यास ने मुझे दूर कर दिया है। मैंने इसका उपयोग करने का भी प्रयास किया है:? ऑपरेटर (गतिशील प्रकार परीक्षण) और जब पैटर्न मिलान ब्लॉक में खंड, लेकिन यह अभी भी सभी प्रकार की त्रुटियों का उत्पादन करता है।
जैसा कि मैं भाषा के लिए नया हूं, मैं यहां कुछ असंभव करने की कोशिश कर रहा हूं, इसलिए वैकल्पिक समाधान होने पर कृपया मुझे बताएं।
के लिए शुभकामनाएं गुड स्पष्टीकरण - मुझे लगता है कि मैं समझ रहा हूं कि अब क्या हो रहा है। इसके लिए चीयर्स। चीजों पर पढ़ने के बाद, ऐसा लगता है कि एफ # अभी भी कुछ अच्छी सुविधाओं को कार्यात्मक भाषाओं में लापता है जैसे कि हास्केल के पास है। शायद इन सुविधाओं को जल्द ही कार्यान्वित किया जाएगा कि एफ # एक प्रथम श्रेणी .NET भाषा है। – Noldorin
यह सुनिश्चित नहीं है कि आप इसे 'जीवित' प्रश्न या नहीं चाहते हैं, लेकिन वर्तमान एफ # रिलीज के बाद अब अब इसकी आवश्यकता नहीं है OverloadId attrib (yey!) आप उत्तर को समायोजित करना चाहते हैं ... – ShuggyCoUk
धन्यवाद, मैं पहले ही कोड अपडेट कर चुका हूं, लेकिन गद्य को अपडेट करना भूल गया। – Brian