Un blocco di codice, o blocco, è un gruppo di zero o più espressioni che introduce un nuovo corpo con ambito. (Un blocco con zero espressioni sarebbe un blocco vuoto e idealmente verrebbe usato solo come segnaposto da riempire in seguito).
I blocchi di codice possono comparire solo dopo [identificatori] (verse-glossary#identifier).
Il termine ambito si riferisce alla parte di codice in cui l'associazione tra un identificatore (nome) e un valore è valida e in cui tale nome può essere utilizzato per fare riferimento al valore. Ad esempio, qualsiasi costante o variabile creata all'interno di un blocco di codice esiste solo nel contesto del blocco di codice. Ciò significa che la durata degli oggetti è limitata all'ambito in cui sono stati creati e non possono essere utilizzati al di fuori di quel blocco di codice.
L'esempio seguente mostra come calcolare il numero massimo di frecce acquistabili con il numero di monete in possesso del giocatore. La costante MaxArrowsYouCanBuy
viene creata all'interno del blocco if
, quindi l'ambito è limitato al blocco if
. Quando la costante MaxArrowsYouCanBuy
viene utilizzata nella stringa di stampa, genera un errore perché il nome MaxArrowsYouCanBuy
non esiste nell'ambito al di fuori dell'espressione if
.
CoinsPerQuiver : int = 100
ArrowsPerQuiver : int = 15
var Coins : int = 225
if (MaxQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
MaxArrowsYouCanBuy : int = MaxQuiversYouCanBuy * ArrowsPerQuiver
Print("Puoi comprare al massimo {MaxArrowsYouCanBuy} frecce con le tue monete.") # Errore: Identificatore sconosciuto MaxArrowsYouCanBuy
Verse non supporta il riutilizzo di un identificatore anche se è dichiarato in un ambito diverso, a meno che non si qualifichi l'identificatore aggiungendo (qualifying_scope:)
prima di esso, dove qualifying_scope è il nome del modulo, della classe o dell'interfaccia di un identificatore. Ogni volta che definisci e utilizzi un identificatore, devi aggiungere anche un qualificatore all'identificatore.
Per maggiori dettagli, vedi modulo, classe e interfaccia.
Formati dei blocchi di codice
I blocchi di codice hanno tre possibili formati in Verse. Sono tutti semanticamente equivalenti, quindi puoi cambiare lo stile di un blocco di codice senza cambiare ciò che fa.
Se annidi un blocco di codice all'interno di un altro blocco di codice, devi comunque usare un identificatore all'inizio del blocco di codice annidato. Per annidare il codice, utilizza l'espressione blocco.
Formato spaziato
Con questo formato, il blocco inizia con :
, con ogni espressione che segue sulla propria riga. Ogni riga è uniformemente rientrata di quattro spazi.
if (test-arg-block):
expression1
expression2
Tieni presente che if (test-arg-block)
non fa parte del blocco, ma il blocco inizia alla fine di quella riga con :
.
Puoi anche utilizzare ;
per separare più espressioni su una singola riga.
Formato a più righe con parentesi graffa
Il blocco è racchiuso da {}
e le espressioni sono su nuove righe.
if (test-arg-block)
{
expression1
expression2
}
Puoi anche utilizzare ;
per separare più espressioni su una singola riga.
Formato a linea singola con punto
Con questo formato, il blocco inizia con .
con ogni espressione sulla stessa riga e ogni espressione è separata da ;
invece di essere posta su una nuova riga.
if (test-arg-block). expression1; expression2
Se utilizzi il formato a riga singola con punto in un'espressione if
che ha un else
, puoi avere solo un'espressione prima di else
. Ad esempio:
if (test-arg-block). expression1 else. expression2