Appendici
Appendice A — Riferimento rapido della sintassi
Una pagina sola da tenere sottomano. Tutte le forme qui elencate sono trattate per esteso nei capitoli; qui le ritrovi in forma compatta.
Commenti e struttura
# commento di riga
#[ commento
su più righe ]#I blocchi si aprono con allora (dopo se, altrimenti se, caso) o con fai (dopo mentre, per ogni, quando) e si chiudono sempre con fine. A fine riga allora/fai si possono omettere. ripeti N volte non vuole né l'uno né l'altro.
Dati
variabile x = 0 # dichiara (poi: x = 5, x += 1)
costante PI = 3.14 # non si può più cambiare
variabile a, b = 1, 2 # più nomi insieme; scambio: a, b = b, a| Tipo | Esempio |
|---|---|
| intero | 42, -7, 1_000_000, 2 ^ 100 |
| decimale | 3.14 (punto, non virgola) |
| testo | "ciao", """su più righe""" |
| logico | vero, falso |
| nulla | nulla |
| lista | [1, 2, 3] |
| dizionario | {"nome": "Ada"} |
| soldi / frazione | soldi("1.50"), frazione(1, 3) |
Operatori
Aritmetici: + - * / (sempre decimale) // (quoziente intero) % (resto) ^ (potenza). Confronto: == != < <= > >=, in, è / non è (con nulla). Logici: e, o, non. Catena: valore |> funzione.
Testi
"Ciao {nome}, hai {anni + 1} anni" # interpolazione
"{prezzo:2}" # due decimali
"{n:migliaia}" # punti delle migliaia
"{importo:migliaia 2}" # entrambi (all'italiana)
testo[0] testo[-1] testo[0..2] # indici e fetteCondizioni
se condizione allora
...
altrimenti se altra allora
...
altrimenti
...
fine
scegli valore
caso 10 allora ...
caso 8, 9 allora ...
caso 6..7 allora ...
altrimenti ...
fineCicli
mentre condizione fai ... fine
per ogni x in sequenza fai ... fine
per ogni chiave, valore in dizionario fai ... fine
ripeti 3 volte ... fine
ripeti per sempre ... fine # con interrompi
ogni 1 secondo fai ... fine # temporizzato
dopo 3 secondi fai ... fineinterrompi esce dal ciclo; continua salta al giro dopo.
Funzioni
funzione nome(a, b = 10)
restituisci a + b
fine
variabile f = funzione (x) restituisci x * 2 fine # anonima
funzione tutti(valori...) ... fine # quanti argomenti vuoi
nome(voti...) # srotola una listaSenza restituisci, una funzione si chiama anche come comando: saluta Ada.
Errori
prova
...
cattura ErroreValore come e
scrivi(e.messaggio)
cattura come e
...
infine
...
fine
lancia ErroreValore("messaggio")
verifica "nome" fai # test, eseguiti con `leo verifica`
aspettati doppio(21) == 42
aspettati errore ErroreValore fai ... fine
fineClassi
classe Persona
ha nome
ha eta = 0
azione saluta()
scrivi "Ciao, sono {questo.nome}"
fine
fine
variabile p = Persona("Ada", 36) # oppure: nuovo Persona(...)
classe Cane estende Animale
azione verso() dà testo
restituisci genitore.verso() + "!"
fine
fineModuli
importa "forme.leo" # porta dentro i nomi
importa forme come f # usa con il punto: f.area(2)
importa matematica come m # anche i gruppi della libreriaParallelismo e sequenze pigre
variabile l = in parallelo fai restituisci calcolo() fine
scrivi(aspetta(l))
variabile c = canale() # c.invia(x), c.ricevi(), c.chiudi()
aspetta_tutti([l1, l2]) aspetta_il_primo([l1, l2]) annulla(l)
numeri_infiniti(1).mappa(f).filtra(g).prendi(5).a_lista()
pigra(lista).finche(f).a_lista()Esecuzione
leo programma.leo # esegui
leo verifica programma.leo # esegui i blocchi `verifica`
leo controlla progetto # controlli statici (senza eseguire)
leo formatta programma.leo # riscrive nella forma canonica
leo compila programma.leo # eseguibile Windows
leo # REPL interattivo