Un'espressione è la più piccola unità di codice che genera un risultato quando viene valutata. In Verse tutto è un'espressione, il che significa che tutto si risolve in un valore.
Ne è un esempio l'espressione if ... else
che in Verse valuta un valore che dipende dal contenuto dei
blocchi blocchi espressione. Il codice che segue valuta un valore string che contiene "Grande!" o "Piccolo!", a seconda che MyNumber
sia superiore a 5:
if (MyNumber > 5):
“Big!”
else
“Small!”
Ciò significa che puoi utilizzare un if ... else
direttamente come input per le funzioni invece di memorizzare un risultato e utilizzare quel risultato come input.
Sebbene questo esempio sia semplice, ci sono contesti in cui diventa più efficace. Ad esempio, i loop valutano array di valori, in modo da poter creare rapidamente nuovi array basati su quelli esistenti.
Nel codice seguente, MyArray
conterrà tutti i valori di NumberArray
che sono inferiori a 5.
MyArray : []int = for(Number := NumberArray, Number < 5):
Numero
Espressioni fallibili
Un'espressione fallibile è un'espressione che può riuscire e generare un valore, oppure non riuscire e non generare alcun valore. Le espressioni fallibili possono essere eseguite solo in un contesto di errore perché quel contesto definirà cosa succede in caso di errore dell'espressione.
Esempi di espressioni fallibili sono l'indicizzazione in un array, poiché un indice non valido avrà esito negativo, e l'utilizzo di operatori di confronto tra valori non comparabili. Per ulteriori informazioni sulle espressioni fallibili in Verse, vedi Fallimento.
Elenco delle espressioni in Verse
La tabella seguente descrive i diversi tipi di espressioni in Verse. Per saperne di più su ogni espressione, segui i link.
Espressione | Descrizione | L'espressione è fallibile? |
---|---|---|
Valori letterali | Un valore letterale è un valore fisso nel codice, ad esempio un numero o un carattere. In Verse, ci sono valori letterali per i seguenti tipi:
|
|
Chiamate di funzione | Una chiamata di funzione è un'espressione e può avere due forme: FunctionName() e FunctionName[] . Il tipo di risultato dell'espressione della chiamata di funzione è definito nella firma della funzione. Per altri dettagli, leggi Funzione. |
Solo quando la chiamata di funzione ha la forma FunctionName[] e la definizione di funzione ha lo specificatore <decides> . |
Confronto | Un'espressione di confronto confronta due elementi utilizzando uno degli operatori di confronto:
Per altri dettagli, leggi Operatori. |
Sì |
Assegnazione | Un'espressione di assegnazione memorizza un valore in una posizione modificabile, come ad esempio durante l'inizializzazione di una costante o la modifica del valore di una variabile. Per altri dettagli, leggi Variabili e costanti. | |
Matematica | Solo per la divisione di interi. | |
Decisione | Un'espressione decisionale utilizza gli operatori not , and e or per controllare il flusso decisionale con esito positivo e negativo. Per altri dettagli, leggi Operatori. |
Sì |
Query | Un'espressione di query utilizza l'operatore ? e controlla se un valore logic o option è true . In caso contrario, l'espressione non riesce. Per altri dettagli, leggi Operatori. |
Sì |
Istanziazione di classi e struct | La creazione di un'istanza di una class o struct è un'espressione. Vedi Classe e Struttura. |
|
Flusso di controllo | Il flusso di controllo è l'ordine in cui un computer esegue le istruzioni. Puoi utilizzare espressioni come
Per altri dettagli, leggi Flusso di controllo. |
|
Array | Un array è un contenitore in cui è possibile memorizzare elementi dello stesso tipo. Gli elementi di un array seguono lo stesso ordine in cui sono stati inseriti ed è possibile accedervi in base alla loro posizione nell'array, detta indice. Per altre informazioni, vedi Array. | Solo quando si indicizza in un array. |
Tupla | Una tupla è un contenitore in cui è possibile memorizzare elementi di uno o più tipi. La posizione degli elementi di una tupla corrisponde all'ordine in cui sono stati inseriti ed è per mezzo di essa, detta indice, che è possibile accedere a ciascun elemento. Per altre informazioni, vedi Tupla. | |
Mappa | Una mappa è un contenitore in cui è possibile memorizzare associazioni tra valori in strutture dette coppie chiave-valore. Le coppie chiave-valore possono essere qualsiasi combinazione di tipi purché il tipo di chiave sia comparabile. L'ordine degli elementi in una mappa corrisponde alla sequenza di inserimento delle coppie chiave-valore in essa ed è possibile accedervi tramite le relative chiavi univoche. Per altre informazioni, vedi Mappa | |
Opzione | Un'opzione è un contenitore che può avere uno o nessun valore di un tipo. Per altre informazioni, vedi Opzione. | |
Intervallo | Le espressioni di intervallo contengono tutti i numeri compresi tra i due valori specificati, inclusi quelli con .. tra, ad esempio 1..5 . Le espressioni di intervallo possono essere utilizzate solo in alcuni punti, ad esempio nelle espressioni for . Per altri dettagli, leggi Intervallo. |