Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Basic operators

getting_started/basic_operators.livemd

Basic operators

Introduccion

En la clase pasada, vimos que Elixir provee +, -, *, / como operadores aritmeticos, ademas de funciones como div/2 y rem/2 para division entera y conocer el remanente de la division.

Elixir tambien provee ++ y -- para manipular listas.

[1, 2, 3] ++ [4, 5, 6]
[1, 2, 3] -- [2]

La concatenacion de cadenas is posible con <>:

"foo" <> "bar"

Elixir tambien provee operadores booleanos: or, and, y not. Estos operadores son estrictos en el sentido que ellos esperan algo que resulte en un valor booleano (true o false) como su primer argumento:

true and true
false or is_atom(:example)

Si provees un valor no booleano obtendras una excepcion:

1 and true

Los operadores or y and son conocidos como corto circuitos. Ellos solo ejecutan el lado derecho si el lado izquierdo no es suficiente para determinar el resultado:

false and raise("This error will never be raised")
true or raise("This error will never be raised")

Aparte de estos operadores booleanos, Elixir tambien provee ||, && y ! los cuales aceptan argumentos de cualquier tipo. Para estos operadores, todos los valores excepto false y nil evaluaran a true:

# or
1 || true
# or
false || 11
# and
nil &amp;&amp; 13
# and
true &amp;&amp; 17
# not
!true
# not
!1
# not
!nil

Como regla de oro, usa and, or y not cuando esperas valores booleanos. Si cualquiera de los argumentos es un valor no booleano, entonces usa &&, || y !.

Elixir tambien provee ==, !=, ===, !==, <=, >=, < y > como operadores de comparacion:

1 == 1
1 != 2
1 < 2

La diferencia entre== y === es que el ultimo es mas estricto al comparar enteros con flotantes:

1 == 1.0
1 === 1.0

En Elixir, tambien puedes comparar dos tipos de datos distintos:

1 < :atom

La razon por la que puedes comparar distintos tipos de datos es pragmatismo. De esa manera, los algoritmos de ordenamiento no necesitan preocuparse por los diferentes tipos de datos para realizar dicha clasificacion. El orden de clasificacion, de menor a mayor, es:

numeros, atomos, referencias, funciones, puertos, pid, tuplas, maps, listas, bitstring

No necesitas memorizar esto, es suficiente saber que existe. Para mas informacion, revisa la pagina de referencia acerca de los operadores.

En la siguiente clase, estaremos hablando sobre coincidencia de patrones o pattern matching.

Agradecimientos

Este tutorial es una traduccion libre del contenido presentado en la seccion Basic Operators, el cual es parte de la guia oficial de Elixir.