cromo La guida di Cromo
PDF EN

Appendice A: Parole chiave e operatori

#Parole chiave

Parola chiaveUso
breakesce da un ciclo
caseun ramo di uno switch
catchgestisce un'eccezione
constuna variabile immutabile; un metodo che non modifica il suo oggetto; una const func
continuepassa all'iterazione successiva di un ciclo
defaultil ramo di uno switch per i valori non elencati
elsel'alternativa di un if
enumdichiara un enum
externdichiara funzioni C, in un modulo con import unsafe
false, truei valori di bool
finallyviene eseguito a ogni uscita da un try
foril ciclo, in tutte le sue forme
funcil tipo di una funzione
ifuna condizione
importimporta un modulo
inin un for sugli elementi
interfacedichiara un'interfaccia
movesposta un valore; un parametro o una cattura che prende il possesso
publicrende una dichiarazione visibile fuori dal suo modulo
refun parametro o una cattura che modifica; gli elementi di un for che si possono modificare
retritorna da una funzione
structdichiara una struct
switchsceglie tra più case
throwlancia un'eccezione
tryil blocco di cui si gestiscono le eccezioni
unsafeimport unsafe: il dialetto delle funzioni C e della memoria grezza
voidnessun risultato

print, println, eprint, eprintln, format, panic e assert sono funzioni integrate, non parole chiave.

#Tipi integrati

TipoSignificato
i8, i16, i32, i64interi con segno
u8, u16, u32, u64interi senza segno
f32, f64numeri in virgola mobile
booltrue o false
charun byte, sinonimo di u8
stringtesto in UTF-8
list<T>una lista che cresce
map<K, V>una tabella hash
T[n]un array di dimensione fissa
func(A, B) Runa funzione
addrun indirizzo C, solo con import unsafe

#Operatori

Dalla precedenza più alta alla più bassa:

OperatoriSignificato
. () []membro, chiamata, indice
! -not, inversione dei bit, negazione
* / %moltiplicazione, divisione, resto
+ -addizione, sottrazione; + concatena anche le stringhe
<< >>shift
&and bit a bit
^or esclusivo bit a bit
|or bit a bit
== != < <= > >=confronti
&&and logico, valutato in cortocircuito
||or logico, valutato in cortocircuito
= += -= *= /= %= &= |= ^= <<= >>=assegnamenti, istruzioni a sé stanti
  • i++ e i-- sono istruzioni a sé stanti, mai parti di un'espressione.
  • Non esiste l'operatore condizionale ?:: scrivi un if.
  • Uno shift oltre la larghezza del tipo provoca un panic nelle build di debug.
  • Gli assegnamenti sono istruzioni: if (a = b) non è Cromo.

#Letterali

LetteraleEsempio
intero42, 1_000_000, 0xFF, 0b1010
virgola mobile3.14, 1e-9, 2.5e3
carattere'a', '\n', '\t', '\\', '\'', '\x41'
stringa"text", con le stesse sequenze di escape e \"
lista[1, 2, 3]

#Attributi

Gli attributi si scrivono come in C++11, prima di ciò a cui si applicano:

AttributoSignificato
[[test]]una funzione di test
[[json("name")]]il nome di un campo o di un case nel JSON
[[json(skip)]]un campo escluso dal JSON