Corso di Raku / Avanzato / Contenitori / Contesti
Contesto numerico, stringa e booleano
Tre contesti molto comuni richiedono a un valore di comportarsi come un numero, una stringa o un valore Booleano. Ciascuno ha un operatore prefisso che lo forza esplicitamente:
+— contesto numerico~— contesto stringa?— contesto Booleano
Applicati a un array, restituiscono rispettivamente la sua lunghezza, i suoi elementi uniti da spazi, e se contiene elementi:
my @a = 1, 2, 3;
say +@a; # 3
say ~@a; # 1 2 3
say ?@a; # TrueUn array vuoto e 0 in contesto numerico e
False in contesto Booleano:
my @empty;
say +@empty; # 0
say ?@empty; # FalseNon e necessario scrivere sempre questi operatori manualmente, perche
il linguaggio puo imporre il contesto corretto al posto vostro.
L’aritmetica mette i suoi operandi in contesto numerico, la
concatenazione li mette in contesto stringa, e if,
while e and/or mettono la loro
condizione in contesto Booleano:
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 emptyQuindi if @array { … } funziona esattamente come ci si
aspetterebbe: un array non vuoto e vero. Gli operatori prefisso sono il
modo esplicito per richiedere le stesse conversioni.
In combinazione con un if postfisso, questo permette di
creare codice davvero espressivo:
say "{+@a} items are there" if @a; # 3 items are therePratica
Risolvi 1 quiz sul contenuto di questo argomento.
Navigazione del corso
← Contesti | Quiz — Contesti →
💪 Oppure vai direttamente agli esercizi di questa
sezione.