_在榆树中意味着什么?

wmo*_*ock 6 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'

    (_, _) ->
        []
Run Code Online (Sandbox Code Playgroud)

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

rob*_*oby 9

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

在您的示例中,代码(_, _)将匹配任何具有2个值的元组.请注意,它也可以替换为_因为您最终没有关心任何一个值.一个更具说明性的示例是您关注元组中的一个值而不关注另一个值的位置,例如fst 核心包中的实现

fst : (a,b) -> a
fst (a,_) =
  a
Run Code Online (Sandbox Code Playgroud)

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

没有null或没有undefined榆树,所以你不必担心"没有价值"(如果某些东西没有价值,则使用Maybe类型).