Operadores de comparação em Julia são semelhantes aos de muitas outras linguagens, embora com algumas opções extras para quem gosta de matemática.
Para 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 costuma acontecer com Julia, um editor adequado facilita o uso dos símbolos matemáticos. Digite \ne, \le ou \ge e depois TAB para obter ≠, ≤ ou ≥.
O exemplo anterior usa apenas números, mas veremos em outras partes do programa que vários tipos adicionais têm uma noção de ordenação e podem ser testados quanto a ser maior ou menor.
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 há necessidade de parênteses () nem de chaves {}, e a indentação serve "apenas" para melhorar a legibilidade (mas legibilidade é muito importante!).
Tanto elseif quanto else são opcionais, e pode haver vários blocos elseif.
Porém, o end é obrigatório.
É possível aninhar condicionais if, embora você possa querer ajudar a legibilidade com o uso criterioso 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: apenas expressões que resultam em true ou false podem ser usadas como condicionais.
Julia evita deliberadamente qualquer conceito de "truthiness", então 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 em uma condicional.
Julia, como muitas linguagens, tem um operador ternário para tornar isso mais conciso.
A sintaxe é conditional ? value_if_true : value_if_false.
Assim, o exemplo anterior poderia ser reescrito:
n = n < 0 ? 0 : n
Os parênteses não são exigidos pelo compilador, mas podem melhorar a legibilidade.
match?No momento, nenhuma estrutura match/case faz parte da linguagem base.
Para casos simples, recomenda-se usar if..elseif..else.
Para correspondência de padrões sofisticada, semelhante à de Scala, o pacote Match.jl é popular.
Porém, como acontece com a maioria dos pacotes de terceiros, Match não está disponível no test runner do Exercism.