के माध्यम से एफ # भेदभावित यूनियन उदाहरणों की तुलना करना सबसे पहले, खराब शीर्षक के लिए क्षमा चाहते हैं - मुझे समस्या का बेहतर वर्णन करने के लिए पर्याप्त F # समझ में नहीं आता है।पैटर्न मिलान
पर विचार करें इस सरल ड्यू:
type Money =
| USD of decimal
| GBP of decimal
| EUR of decimal
static member (+) (first: Money, second: Money) =
match first, second with
| USD(x), USD(y) -> USD(x + y)
| GBP(x), GBP(y) -> GBP(x + y)
| EUR(x), EUR(y) -> EUR(x + y)
| _ -> failwith "Different currencies"
मैं विभिन्न मुद्राओं में पैसे का प्रतिनिधित्व कर रहा हूँ, और (+) ऑपरेटर ओवरलोडिंग ताकि मैं सुरक्षित रूप से पैसे + धन कर सकते हैं। हालांकि, अगर मेरे पास कई मुद्राएं हैं तो मैच स्टेटमेंट लिखने के लिए कठिन हो जाएगा। क्या कुछ ऐसा व्यक्त करने का कोई तरीका है:
match first, second with
| _(x), _(y) -> _(x + y)
या क्या एक ही परिणाम प्राप्त करने का कोई अलग तरीका है? मैंने here वर्णित सीमाओं के कारण माप की इकाइयों को माना और त्याग दिया है।
क्या आप एफ # में इसके लिए माप की इकाइयों का उपयोग नहीं करना चाहिए? –
मुझे माप की इकाइयों का उपयोग करना अच्छा लगेगा, लेकिन क्योंकि रनटाइम पर माप मिटा दिया गया है, इसलिए बाहरी स्रोतों से डेटा पढ़ने पर लिंक से मुझे कोई सुरक्षा नहीं मिलती है (लिंक किए गए प्रश्न देखें)। मुझे गलत साबित होना अच्छा लगेगा! – Akash