Programación en Erlang/Tabla de operadores con asociatividad y precedencia
En expresiones que consisten de sub-expresiones los operadores serán desarrollados de acuerdo a su precedencia definida.
Símbolo | Asociatividad |
---|---|
: | |
# | |
Unary + - bnot not | |
/ * div rem band and | Izquierda |
+ - bor bxor bsl bsr or xor | Izquierda |
++ -- | Derecha |
== /= =< < >= > =:= =/= | |
andalso | |
orelse | |
= ! | Derecha |
catch |
Los operadores con la prioridad más alta serán los primeros en evaluarse. Operadores con la misma prioridad serán evaluados por su asociatividad. Los operadores aritméticos con asociatividad por la izquierda son evaluados de izquierda a derecha.
Ejemplo:
6 + 5 * 4 - 3 / 2 => 6 + 20 - 1.5 => 26 - 1.5 => 24.5
Expresiones booleanas de Corto Circuito
[editar]Ejemplo:
Expr1 orelse Expr2 Expr1 andalso Expr2
Estas son expresiones booleanas en las que Expr2 será evaluada solo si es necesario. En una expresión orelse, Expr2 se evaluara si y solo si Expr1 se evalúa a false. En una expresión andalso, Expr2 será evaluado si y solo si Expr1 se evalúa a true.
Ejemplo:
if A >= 0 andalso math:sqrt(A) > B -> ...
if is_list(L) andalso length(L) == 1 -> ...