_在榆树中意味着什么?

时间:2016-04-14 23:23:00

标签: elm

我正在查看http://elm-lang.org/examples/zip上的zip示例,我对榆树中_的确切含义有疑问。

zip : List a -> List b -> List (a,b)
zip xs ys =
   case (xs, ys) of
    ( x :: xs', y :: ys' ) ->
        (x,y) :: zip xs' ys'

    (_, _) ->
        []

我的预感是它意味着“其他一切”,但这是否意味着任何有效价值?如果没有价值怎么办?

1 个答案:

答案 0 :(得分:8)

_用于匹配您不关心价值的任何内容,因此它通常用于匹配"其他所有内容"情况下。

在您的示例代码中,(_, _)将匹配任何元组,其中包含2个值。请注意,它也可以仅用_替换,因为您最终不关心任何一个值。一个更具说明性的示例是您关注元组中的一个值但不关注另一个值的位置,例如fst in the core package的实现

fst : (a,b) -> a
fst (a,_) =
  a

我们不关心元组中的第二个值,因此它只与该位置的_匹配。

榆树中没有nullundefined,因此您不必担心没有价值" (如果某些东西没有价值,则使用Maybe类型。)