3

みたいなものを作りたい(Nemerle構文)

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

F#では、F#では本当ですか?

4

2 に答える 2

13

これを直接サポートすることはできませんが、次のような効果を模倣することもできます。

let 1, st, _ | 2, _, st = stt, "Summ", "AVG"
sprintf "%s %a" st summbycol (counter, stt)
于 2010-12-28T13:21:20.833 に答える
8

私の理解が正しければ、パターンの一部として変数に値を代入したいとお考えでしょう。F# ではこれを直接サポートしていませんが、それを行うパラメーター化されたアクティブ パターンを定義できます。

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

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

後の文字列Letはパターンのパラメーターです (そして の値として渡されますv)。パターンは、バインドされた値と元の値を含むタプルを返します (したがって、タプルの 2 番目のパラメーターで元の値を照合できます。

于 2010-12-28T09:34:25.970 に答える