在Elm中使用单个语句处理多个匹配情况

14

我知道在Scala中,你可以使用单个表达式处理多个模式,那么在Elm中是否也有类似的功能呢?

l match {
    case B(_) | C(_) => "B"
}
2个回答

13

在 Elm 中,您一次只能匹配一个模式,除非您在下划线字符上进行模式匹配,该字符会捕获所有内容。

case l of
    B _ -> "B"
    C _ -> "B"
    ...

-- or...
case l of
    ...
    _ -> "B"

如果你有比字符串更复杂的内容,最好将它单独拆分成函数:

let
    doB -> "B"
in
    case l of
        B _ -> doB
        C _ -> doB
        ...

0
你可以类似以下的方式来做。
sample expression = 
    case expression of
        Case1 -> "String"
        Case2 -> sample Case1
        Case3 -> sample Case1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接