Kernel.match-question-mark

You're seeing just the macro match-question-mark, go back to Kernel module for more information.
Link to this macro

match?(pattern, expr)

View Source (macro)

A convenience macro that checks if the right side (an expression) matches the left side (a pattern).

Examples

iex> match?(1, 1)
true

iex> match?({1, _}, {1, 2})
true

iex> map = %{a: 1, b: 2}
iex> match?(%{a: _}, map)
true

iex> a = 1
iex> match?(^a, 1)
true

match?/2 is very useful when filtering or finding a value in an enumerable:

iex> list = [a: 1, b: 2, a: 3]
iex> Enum.filter(list, &match?({:a, _}, &1))
[a: 1, a: 3]

Guard clauses can also be given to the match:

iex> list = [a: 1, b: 2, a: 3]
iex> Enum.filter(list, &match?({:a, x} when x < 2, &1))
[a: 1]

However, variables assigned in the match will not be available outside of the function call (unlike regular pattern matching with the = operator):

iex> match?(_x, 1)
true
iex> binding()
[]