एफ # में मैं वाक्यविन्यास के भीतर विभिन्न स्थानों में पैटर्न मिलान का उपयोग कर सकता हूं।एक कन्स्ट्रक्टर तर्क को कैसे नष्ट किया जाए?
उदाहरण के लिए:
// Given this type...
type SingleCaseUnion = | SingleCaseUnion of int
/// ...I can do this:
let destructureInFunc (SingleCaseUnion n) =
printfn "%d" n
// ...and this:
type DestructureInMethod() =
member t.M(SingleCaseUnion n) =
printfn "%d" n
लेकिन मैं बाहर काम नहीं कर सकता ऐसा करने के तरीके:
type DestructureInCtor(SingleCaseUnion n) =
do printfn "%d" n
// type DestructureInCtor(SingleCaseUnion n) =
// ---------------------------------------^
//
// stdin(3,40): error FS0010: Unexpected identifier in type definition. Expected ')' or other token.
मैं वाक्य रचना गलत है, या एफ # पैटर्न का समर्थन नहीं निर्माता मानकों में मिलान करता है ?
primary-constr-args : attributesopt accessopt (simple-pat, ... , simplepat)
simple-pat :
| ident
| simple-pat : type
के रूप में बताया गया है, माध्यमिक कंस्ट्रक्टर्स अनुमति दी जाती है पैटर्न मिलान किए गए मानकों, लेकिन प्राथमिक निर्माता के साथ अंतर प्राथमिक के मापदंडों में से प्रत्येक है दोनों एक है:
हालांकि यह * प्राथमिक * रचनाकारों के लिए काम नहीं करता है, अन्य (माध्यमिक) निर्माता इसे अनुमति देते हैं। * (टिप्पणी के रूप में दोबारा पोस्ट किया गया क्योंकि मेरा जवाब अनावश्यक हो गया।) * – Vandroiy