2016-10-22 46 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