_ 在 Elm 中是什么意思?

What does _ mean in Elm?

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

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

    (_, _) ->
        []

我的直觉是它意味着 "everything else" 但这是否意味着任何有效值?没有值怎么办?

_用于匹配任何你不关心值的地方,所以它通常用于匹配"everything else"的情况。

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

的实现
fst : (a,b) -> a
fst (a,_) =
  a

我们不关心元组中的第二个值,所以它只匹配那个位置的 _

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