Noah Blues
Noah Blues

Reputation: 1359

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

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?

Upvotes: 5

Views: 219

Answers (1)

Peter Minten
Peter Minten

Reputation: 136

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

def foo(list = [h|t]), do: list ++ h

Upvotes: 8

Related Questions