Corso di Raku / Avanzato / Altro sui tipi predefiniti / Tipi nativi
Tipi a livello macchina
I tipi nativi hanno nomi in minuscolo: int,
num e str. Si dichiara una variabile con uno
di essi esattamente come si farebbe con Int o
Str:
my int $i = 42;
my num $n = 3.14e0;
say $i; # 42
say $n; # 3.14Un valore nativo corrisponde direttamente a un registro o una parola della macchina, senza l’oggetto wrapper che un normale valore Raku porta con sé. Questo rende i tipi nativi più veloci e più compatti, il che conta nei cicli numerici intensivi e negli array di grandi dimensioni.
C’è un comportamento da tenere presente fin da subito: una variabile
nativa non può mai essere indefinita. Mentre un normale contenitore
Int inizia come Any indefinito, un
int nativo inizia a zero:
say (my Int $a); # (Int)
say (my int $b); # 0Lo stesso vale per gli array nativi, dichiarati mettendo il tipo
nativo prima della variabile @:
my int @numbers = 10, 20, 30;
say @numbers.sum; # 60Un array di questo tipo memorizza i suoi elementi come interi
macchina grezzi anziché come oggetti Int boxed, quindi usa
meno memoria. Quando si introspeziona un valore nativo, viene
automaticamente boxed nel tipo completo corrispondente, ed è
per questo che (my int $b).WHAT restituisce
(Int).
Pratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Tipi nativi | Quiz — Tipi nativi →
💪 Oppure vai direttamente agli esercizi di questa
sezione.