Is there a way that we can reference the whole variable while in pattern matching of Elixir?

StackOverflow https://stackoverflow.com/questions/20921114

  •  24-09-2022
  •  | 
  •  

Question

There is an as-pattern in Haskell, which allows us referencing the whole variable while in pattern matching:

foo wholeList@(head:tail) = wholeList ++ head

The variable wholeList represents the original variable.

Assuming that head is ["Hello"], and tail is ["World"], then wholeList is ["Hello", "World"].

Using as-pattern, we can avoid constructing the variable again by concatenating head and tail.

Does such feature exist in Elixir?

Was it helpful?

Solution

Yes, this is possible. Just use = in your pattern:

def foo(list = [h|t]), do: list ++ h
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top