Vergleichsoperatoren in Julia ähneln denen vieler anderer Sprachen, bieten aber ein paar Extras für Mathe-Fans.
Für Gleichheit gibt es die Operatoren == (gleich) und != bzw. ≠ (ungleich).
txt = "abc"
txt == "abc" # true
txt != "abc" # false
txt ≠ "abc" # false (synonym for !=)
Dazu kommen die verschiedenen Größer-/Kleiner-Operatoren.
1 < 3 # true
3 > 3 # false
3 <= 3 # true
3 ≤ 3 # true (synonym for <=)
4 >= 3 # true
4 ≥ 3 # true (synonym for >=)
Wie so oft bei Julia macht ein passender Editor die Verwendung des mathematischen Symbols einfach. Tippe \ne, \le oder \ge und dann TAB, um ≠, ≤ oder ≥ zu erhalten.
Das vorige Beispiel verwendet nur Zahlen, aber in anderen Teilen des Lehrplans werden wir sehen, dass verschiedene weitere Typen eine Ordnung kennen und auf Größer/Kleiner geprüft werden können.
Vergleichsoperatoren lassen sich verketten, was eine klare und knappe Syntax erlaubt:
n = 3
1 ≤ n ≤ 5 # true (n "between" two limits)
Das vorige Beispiel entspricht 1 ≤ n && n ≤ 5.
if
Das ist die vollständige Form einer if-Anweisung:
if conditional1
statements...
elseif conditional2
statements...
else
statements...
end
Runde Klammern () oder geschweifte Klammern {} sind nicht nötig, und die Einrückung dient „nur“ der besseren Lesbarkeit (aber Lesbarkeit ist sehr wichtig!).
Sowohl elseif als auch else sind optional, und es kann mehrere elseif-Blöcke geben.
Das end ist jedoch erforderlich.
Du kannst if-Anweisungen auch verschachteln, aber für eine bessere Lesbarkeit solltest du Klammern, Einrückungen und Kommentare mit Bedacht einsetzen.
Die kürzeste Form einer if-Anweisung sieht ungefähr so aus:
if n < 0
n = 0
end
Zur Erinnerung: Nur Ausdrücke, die zu true oder false ausgewertet werden, können als Bedingungen verwendet werden.
Julia vermeidet bewusst jegliches Konzept von „truthiness“, deshalb sind Nullwerte, leere Strings und leere Arrays nicht gleichbedeutend mit false.
Eine einfache und häufige Situation ist die Auswahl eines von zwei Werten anhand einer Bedingung.
Wie viele Sprachen hat Julia einen ternären Operator, der das kompakter macht.
Die Syntax lautet conditional ? value_if_true : value_if_false.
Das vorige Beispiel lässt sich also so umschreiben:
n = n < 0 ? 0 : n
Der Compiler verlangt keine Klammern, aber sie können die Lesbarkeit verbessern.
match-Anweisung?Eine match/case-Struktur ist derzeit nicht Teil der Basissprache.
Für einfache Fälle empfiehlt sich die Verwendung von if..elseif..else.
Für anspruchsvolleres Pattern Matching, ähnlich wie in Scala, ist das Paket Match.jl beliebt.
Wie bei den meisten Paketen von Drittanbietern ist Match jedoch im Test-Runner von Exercism nicht verfügbar.