Raku-Kurs / Fortgeschritten / Mehr über eingebaute Typen / Native Typen

Maschinennahe Typen

Die nativen Typen haben kleingeschriebene Namen: int, num und str. Du deklarierst eine Variable mit einem davon genauso wie mit Int oder Str:

my int $i = 42;
my num $n = 3.14e0;
say $i; # 42
say $n; # 3.14

Ein nativer Wert entspricht direkt einem Maschinenregister oder -wort, ohne das Wrapper-Objekt, das ein normaler Raku-Wert mit sich trägt. Dadurch sind native Typen schneller und kompakter, was in engen numerischen Schleifen und großen Arrays wichtig ist.

Es gibt ein Verhalten, das du sofort kennen solltest: Eine native Variable kann niemals undefiniert sein. Während ein gewöhnlicher Int-Container als undefiniertes Any beginnt, startet ein nativer int bei Null:

say (my Int $a); # (Int)
say (my int $b); # 0

Das Gleiche gilt für native Arrays, die deklariert werden, indem der native Typ vor die @-Variable gesetzt wird:

my int @numbers = 10, 20, 30;
say @numbers.sum; # 60

Ein solches Array speichert seine Elemente als rohe Maschinen-Ganzzahlen und nicht als geboxte Int-Objekte, wodurch es weniger Speicher verbraucht. Wenn du einen nativen Wert introspektierst, wird er automatisch in den passenden vollwertigen Typ geboxt, weshalb (my int $b).WHAT als Ergebnis (Int) liefert.

Praxis

Lösen Sie 1 Quiz zum Inhalt dieses Themas.

Kursnavigation

Native Typen   |   Quiz — Native Typen


💪 Oder springen Sie direkt zu den Übungen dieses Abschnitts.