Frage

Ich möchte so etwas machen (Nemerle -Syntax)

def something =
match(STT)
    | 1 with st= "Summ"
    | 2 with st= "AVG" =>
        $"$st : $(summbycol(counter,STT))"

Auf F# ist es also echt mit F#?

War es hilfreich?

Lösung

Wenn ich Sie richtig verstehe, möchten Sie einer Variablen als Teil des Musters einen Wert zuweisen. Es gibt keine direkte Unterstützung dafür in F#, aber Sie können ein parametrisiertes aktives Muster definieren, das dies tut:

let (|Let|) v e = (v, e)

match stt with 
| Let "Summ" (st, 1) 
| Let "AVG" (st, 2) -> srintf "%s ..." st

Die Zeichenfolge danach Let ist ein Parameter des Musters (und wird als Wert von übergeben v). Das Muster gibt dann ein Tupel zurück, das den gebundenen Wert und den ursprünglichen Wert enthält (so können Sie den ursprünglichen Wert im zweiten Parameter des Tupels übereinstimmen.

Andere Tipps

Es gibt keine direkte Unterstützung dafür, aber Sie können auch den Effekt wie diesen nachahmen:

let 1, st, _ | 2, _, st = stt, "Summ", "AVG"
sprintf "%s %a" st summbycol (counter, stt)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top