Haskell中有一个 as-pattern ,它允许我们在模式匹配时引用整个变量:
foo wholeList@(head:tail) = wholeList ++ head
变量wholeList
代表原始变量。
假设head
为["Hello"]
,tail
为["World"]
,则wholeList
为["Hello", "World"]
。
使用as-pattern,我们可以通过连接head
和tail
来避免再次构造变量。
Elixir中是否存在此类功能?
答案 0 :(得分:7)
是的,这是可能的。只需在您的模式中使用=
:
def foo(list = [h|t]), do: list ++ h