Os operadores de comparação em Julia são semelhantes aos de muitas outras linguagens, mas com algumas opções extra para quem gosta de matemática.
Para a igualdade, os operadores são == (igual) e != ou ≠ (diferente).
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
Além disso, temos os vários operadores de maior e 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 acontece muitas vezes com Julia, um editor adequado facilita o uso do símbolo matemático. Escreve \ne, \le ou \ge e depois TAB para obteres ≠, ≤ ou ≥.
O exemplo anterior usa apenas números, mas vamos ver noutras partes do currículo que vários tipos adicionais têm uma noção de ordem e podem ser testados com maior/menor que.
Os operadores de comparação podem ser encadeados, o que permite uma sintaxe clara e concisa:
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
O exemplo anterior é sinónimo de 1 ≤ n && n ≤ 5.
if
Esta é a forma completa de uma condicional if:
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
Não é preciso usar parênteses () nem chavetas {}, e a indentação serve "apenas" para melhorar a legibilidade (mas a legibilidade é muito importante!).
Tanto o elseif como o else são opcionais, e pode haver vários blocos elseif. No entanto, o end é obrigatório.
É possível aninhar condicionais if, embora possas querer ajudar a legibilidade com um uso ponderado de parênteses, indentação e comentários.
A forma mais curta de uma condicional if seria algo assim:
if n < 0
n = 0
end
Como lembrete: só as expressões que são avaliadas como true ou false podem ser usadas como condicionais. Julia evita deliberadamente qualquer conceito de "truthiness", por isso valores zero, strings vazias e arrays vazios não são equivalentes a false.
Uma situação simples e comum é escolher um de dois valores com base numa condição.
Tal como muitas linguagens, Julia tem um operador ternário para tornar isto mais conciso.
A sintaxe é conditional ? value_if_true : value_if_false.
Por isso, o exemplo anterior pode ser reescrito assim:
n = n < 0 ? 0 : n
O compilador não exige parênteses, mas estes podem melhorar a legibilidade.
match?De momento, não existe nenhuma estrutura match/case na linguagem base.
Para casos simples, recomenda-se o uso de if..elseif..else.
Para correspondência de padrões mais sofisticada, à semelhança de Scala, o pacote Match.jl é popular. No entanto, como acontece com a maioria dos pacotes de terceiros, o Match não está disponível no test runner do Exercism.