2009-09-04 15 views
5

में नेस्टेड यूनियन प्रकार क्या है एफ # में नेस्टेड यूनियन प्रकारों को क्रेट करने का कोई तरीका है? कुछएफ #


type MainType = 
    | A of 
     | AA of int 
     | AB of float 
    | B of int 

उत्तर

2

नहीं, आप प्रकार अलग करने के लिए (KVB पद के रूप में) होगा। मैंने पॉलिमॉर्फिक भिन्नता (जैसे ओकंपल में) को F # में जोड़ने की योजनाओं के बारे में सुना है, जो आपको कुछ ऐसा करने की अनुमति देगा।

ocaml में,

type mainType = 
    | A of [ `AA of int | `AB of float ] 
    | B of int 
+0

कि महान होगा। – Max

+1

फिलहाल एफ # में पॉलीमोर्फिक भिन्नता जोड़ने की कोई योजना नहीं है। (कौन सा आईआईआरसी का मतलब है घोंसला भेदभाव संघ, सही?) –

+0

हाँ। यह इसके लिए अनुमति देता है, और उस अफवाह को खत्म करने के लिए धन्यवाद, क्रिस। – nlucaroni

2

नहीं, मुझे ऐसा नहीं लगता है। की तरह दो अलग-अलग संघ प्रकार के निर्माण से अधिक कोई खास लाभ हमें नहीं लगता है:

type NestedType = 
| AA of int 
| AB of float 

type MainType = 
| A of NestedType 
| B of int 

let mainValue = A (AA 1) 
+1

मैं नेस्टेड प्रकार नाम का आविष्कार करने की जरूरत नहीं है :) – Max