Вопрос
Я хочу сделать что -то подобное (Синтаксис Немерле)
def something =
match(STT)
| 1 with st= "Summ"
| 2 with st= "AVG" =>
$"$st : $(summbycol(counter,STT))"
на F# так это реально с F#?
Решение
Если я правильно понимаю, вы хотели бы присвоить какое -то значение переменной как часть шаблона. В F#нет прямой поддержки, но вы можете определить параметризованный активный шаблон, который делает это:
let (|Let|) v e = (v, e)
match stt with
| Let "Summ" (st, 1)
| Let "AVG" (st, 2) -> srintf "%s ..." st
Строка после Let
является параметром шаблона (и передается как значение v
) Затем шаблон возвращает кортеж, содержащий связанное значение, и исходное значение (поэтому вы можете соответствовать исходному значению во втором параметре кортежа.
Другие советы
Для этого нет прямой поддержки, но вы также можете имитировать такой эффект:
let 1, st, _ | 2, _, st = stt, "Summ", "AVG"
sprintf "%s %a" st summbycol (counter, stt)
Не связан с StackOverflow