Los operadores de comparación en Julia son similares a los de muchos otros lenguajes, aunque con algunas opciones extra para los amantes de las matemáticas.
Para la igualdad, los operadores son == (igual) y != o ≠ (distinto).
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
Además, tenemos los distintos operadores de mayor y menor que.
1 < 3 # true
3 > 3 # false
3 <= 3 # true
3 ≤ 3 # true (synonym for <=)
4 >= 3 # true
4 ≥ 3 # true (synonym for >=)
Como suele ocurrir con Julia, un editor adecuado facilita el uso del símbolo matemático. Escribe \ne, \le o \ge y luego TAB para obtener ≠, ≤ o ≥.
El ejemplo anterior solo usa números, pero veremos en otras partes del temario que varios tipos adicionales tienen un sentido de orden y se pueden comparar con mayor y menor que.
Los operadores de comparación se pueden encadenar, lo que permite una sintaxis clara y concisa:
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
El ejemplo anterior es un sinónimo de 1 ≤ n && n ≤ 5.
if
Esta es la forma completa de una instrucción if:
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
No se necesitan paréntesis () ni llaves {}, y la indentación sirve «solo» para mejorar la legibilidad (¡pero la legibilidad es muy importante!).
Tanto elseif como else son opcionales, y puede haber varios bloques elseif.
Sin embargo, el end es obligatorio.
Es posible anidar instrucciones if, aunque quizá quieras ayudar a la legibilidad con un uso meditado de paréntesis, sangrías y comentarios.
La forma más corta de una instrucción if sería algo así:
if n < 0
n = 0
end
Como recordatorio: solo las expresiones que se evalúan a true o false se pueden usar como condicionales.
Julia evita deliberadamente cualquier concepto de «truthiness», así que los valores cero, los strings vacíos y los arrays vacíos no son equivalentes a false.
Una situación simple y común es elegir uno de dos valores en función de un condicional.
Julia, como muchos lenguajes, tiene un operador ternario para hacer esto más conciso.
La sintaxis es conditional ? value_if_true : value_if_false.
Así que el ejemplo anterior se podría reescribir:
n = n < 0 ? 0 : n
El compilador no exige paréntesis, pero pueden mejorar la legibilidad.
match?Actualmente no hay ninguna estructura match/case que forme parte del lenguaje base.
Para casos simples, se recomienda usar if..elseif..else.
Para la coincidencia de patrones sofisticada, similar a Scala, el paquete Match.jl es popular.
Sin embargo, como ocurre con la mayoría de los paquetes de terceros, Match no está disponible en el test runner de Exercism.