Elm列表上的模式匹配

示例

我们可以像其他任何数据类型一样在列表上进行匹配,尽管它们有些独特,因为用于构建列表的构造函数是infix函数::。(有关更多信息,请参见示例创建列表。)

matchMyList : List SomeType -> SomeOtherType
matchMyList myList = 
    case myList of
        [] -> 
            emptyCase

        (theHead :: theRest) ->
            doSomethingWith theHead theRest

我们可以根据需要匹配列表中的任意多个元素:

hasAtLeast2Elems : List a -> Bool
hasAtLeast2Elems myList =
    case myList of
        (e1 :: e2 :: rest) -> 
            True
    
        _ -> 
            False

hasAtLeast3Elems : List a -> Bool
hasAtLeast3Elems myList =
    case myList of
        (e1 :: e2 :: e3 :: rest) -> 
            True
    
        _ -> 
            False