F#与 - >匹配

时间:2010-12-28 09:08:37

标签: f# nemerle

我想制作类似的东西(Nemerle语法)

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

所以F#是真的吗?

2 个答案:

答案 0 :(得分:13)

没有直接的支持,但你也可以模仿这样的效果:

let 1, st, _ | 2, _, st = stt, "Summ", "AVG"
sprintf "%s %a" st summbycol (counter, stt)

答案 1 :(得分:8)

如果我理解正确,你想为变量分配一些值作为模式的一部分。在F#中没有直接支持这一点,但您可以定义一个参数化的活动模式来执行此操作:

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

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

Let之后的字符串是模式的参数(并作为v的值传入)。然后该模式返回一个包含绑定值和原始值的元组(因此您可以匹配元组的第二个参数中的原始值。