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#?
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