Elixir


Pattern Matching

Elixir pattern matching

Una de las cosas que más me llamó la atención de elixir es el pattern matching o el encaje de patrones, elixir es uno de los pocos lenguajes funcionales que lo implementan, se trata sobre la asignación de valores, dejame te digo que esto no es como en los otros lenguajes.

En elixir no haces una asignación con el “ = ” haces un match, es significa que elixir no está dando un valor a una variable, más bien está comparando, esta buscando la forma de que ese valor sea igual a la variable, y la única opción es que variable sea igual al valor que le estamos pasando.

Ejemplo


iex(1)> x = 5   
5


Le estamos diciendo que haga match de x = 5, nos va retornar 5, porque la única manera de que haga match es que “x” sea 5.

Lo podemos ver como si tuviéramos una comparación, elixir buscará la forma de que retorne “ True “.


iex(2)> x == 5
true



iex(1)> 4 = 5
** (MatchError) no match of right hand side value: 5



En este caso vemos que nos da falso porque no hay manera de que 4 y 5 hagan match, siempre nos va retornar.


iex(7)> {a, b} = {:hola, :mundo} 
{:hola, :mundo}
iex(8)> a
:hola
iex(9)> b
:mundo



Aquí le dijimos a elixir que busque la manera de que esa tupla sea igual a la otra tupla, nos retorna que hizo match, a = :hola y b = :mundo, elixir busca cómo resolver una incógnita, para que esta cuando se compare retorne “ True ”.

Hay muchas cosas que pase, pero al menos ya es un primer vistazo a lo que es el pattern matching.