Raku-Kurs / Fortgeschritten / Container / Kontexte
Numerischer, String- und Boolescher Kontext
Drei sehr häufige Kontexte fordern einen Wert auf, sich als Zahl, als String oder als Boolescher Wert zu verhalten. Jeder hat einen Präfixoperator, der ihn explizit erzwingt:
+— numerischer Kontext~— Stringkontext?— Boolescher Kontext
Auf ein Array angewendet, ergeben sie seine Länge, seine durch Leerzeichen verbundenen Elemente und ob es Elemente enthält:
my @a = 1, 2, 3;
say +@a; # 3
say ~@a; # 1 2 3
say ?@a; # TrueEin leeres Array ist im numerischen Kontext 0 und im
Booleschen Kontext False:
my @empty;
say +@empty; # 0
say ?@empty; # FalseDu musst diese Operatoren nicht immer von Hand schreiben, denn die
Sprache kann den richtigen Kontext für dich festlegen. Arithmetik setzt
ihre Operanden in den numerischen Kontext, Verkettung setzt sie in den
Stringkontext, und if, while und
and/or setzen ihre Bedingung in den Booleschen
Kontext:
my @a = 1, 2, 3;
say 10 + @a; # 13, here @a is its length: 3
say 'items: ' ~ @a; # items: 1 2 3
if @a { say 'not empty' } # not emptyif @array { … } funktioniert also genau so, wie man es
erhoffen würde: Ein nicht-leeres Array ist wahr. Die Präfixoperatoren
sind die explizite Art, dieselben Umwandlungen anzufordern.
In Kombination mit einem nachgestellten if ermöglicht
dies wirklich ausdrucksstarken Code:
say "{+@a} items are there" if @a; # 3 items are therePraxis
Lösen Sie 1 Quiz zum Inhalt dieses Themas.
Kursnavigation
← Kontexte | Quiz — Kontexte →
💪 Oder springen Sie direkt zu den Übungen dieses
Abschnitts.