In F # posso utilizzare la corrispondenza del modello in una varietà di punti all'interno della sintassi.Come destrutturare un argomento del costruttore?
Ad esempio:
// 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
Ma non riesco a capire come fare questo:
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.
Devo la sintassi sbagliata, o fa F # non supporta il pattern matching in parametri del costruttore ?
Mentre non funziona per i costruttori * primary *, altri costruttori (secondari) lo consentono. * (ripubblicato come commento da quando la mia risposta è diventata ridondante.) * – Vandroiy