2016-10-22 62 views
0

我有一個測試用例,我將一個長度爲3的列表傳遞給case。由於榆樹不允許你錯過一個案子,所以我需要覆蓋其他案件(並且只返回Expect.fail "this should never happen")。Elm:匹配長度列表!= n

列出長度爲0, 1, 2, ... n-1的清單,然後n+1 :: _的作品,但它非常冗長。

如何匹配除3以外的任何長度的列表? (如果3是477,那該怎麼辦?)

+0

你真的需要一個'case'或將一個'if'足夠好? –

+0

@AntoineSnyers我想'if'也可以。這是一個我剛剛匹配的[1,2,3]。 –

回答

5

您只需要匹配三個項目的情況,並處理每個其他組合與_。下面是一個將三個列表轉換爲三個元組的大小的示例,或者在列表不完全是三個項目時返回Nothing

toTuple3 : List a -> Maybe (a, a, a) 
toTuple3 list = 
    case list of 
     a :: b :: c :: [] -> 
      Just (a, b, c) 
     _ -> 
      Nothing