_ 在 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 中没有 null
或 undefined
,因此您不必担心 "no value"(如果某些东西没有价值,Maybe类型被使用)。
我正在查看 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 中没有 null
或 undefined
,因此您不必担心 "no value"(如果某些东西没有价值,Maybe类型被使用)。