Вопрос

Я хочу сделать что -то подобное (Синтаксис Немерле)

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)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top