Pregunta

Quiero hacer algo por el estilo (sintaxis Nemerle)

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

en F # por lo que es real con F #?

¿Fue útil?

Solución

Si he entendido bien, desea asignar un valor a una variable como parte del patrón. No hay soporte directo para esto en C #, pero se puede definir un patrón activa parametrizado que hace eso:

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

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

La cadena después de Let es un parámetro del patrón (y se pasa como valor de v). El patrón entonces devuelve una tupla que contiene el valor límite y el valor original (para que pueda coincidir con el valor original en el segundo parámetro de la tupla.

Otros consejos

No hay soporte directo para eso, sino que puede imitar el efecto como éste, así:

let 1, st, _ | 2, _, st = stt, "Summ", "AVG"
sprintf "%s %a" st summbycol (counter, stt)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top