Enum è l'abbreviazione di enumerazione, che significa nominare o elencare una serie di elementi, denominati enumeratori. Questo è un tipo in Verse che si può utilizzare, ad esempio, per i giorni della settimana o per le direzioni geografiche di una bussola.
Fai clic sull'immagine per ingrandirla.
Enum chiuse e aperte
Verse utilizza gli specificatori di attributo <open> e <closed> sulle enum per determinare come modificare la definizione dell'enum una volta pubblicata l'isola.
Le enumerazioni sono chiuse per impostazione predefinita. Con le enumerazioni chiuse, non puoi aggiungere o riordinare i rispettivi valori o trasformarle in enum aperte una volta che l'isola è stata pubblicata.
Le enumerazioni chiuse sono ideali nei casi in cui si prevede che i valori dell'enum rimangano invariati (ad esempio per i giorni della settimana).
Con le enumerazioni aperte , puoi:
Aggiungere nuovi valori.
Riordinare valori esistenti.
Trasformarle in enum chiuse.
Le enumerazioni aperte sono ideali quando si prevede che il numero di valori intrinsechi possa aumentare in futuro. Ad esempio, un'enumerazione di tipi di armi.
Non puoi impiegare enum aperte in un'istruzione case senza un case predefinito. Al contrario, puoi ricorrere a quelle chiuse senza un case predefinito a patto che tutti i valori di enumerazione abbiano un case.
Creazione di un'enumerazione
| Azione | Esempio di codice |
|---|---|
Creazione di enumerazioni chiuse: Le enum sono chiuse per impostazione predefinita. Utilizza la parola chiave Puoi definire esplicitamente l'enumerazione come chiusa includendo lo specificatore | Verse |
Creazione di enumerazioni aperte: Devi definire in modo esplicito un'enum aperta includendo lo specificatore | Verse |
Accesso a un enumeratore: utilizza | Verse |
Tipo persistente
Un'enum è persistente quando è definita con lo specificatore <persistable>. Ciò significa che puoi utilizzarle nelle variabili weak_map, che sono sottoposte a scansione del modulo, e che i loro valori persistono nelle varie sessioni di gioco.
Per maggiori dettagli sulla persistenza in Verse, consulta Utilizzo dei dati persistenti in Verse.
Non è possibile utilizzare enumerazioni non persistenti con dati persistenti.
Di seguito è riportato un esempio di enum persistente chiuso per i giorni della settimana, che può essere memorizzato, aggiornato e consultato in seguito per un giocatore.
day := enum<persistable>:
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
SundaySe non viene specificato altrimenti, tutte le enum sono chiuse per impostazione predefinita.
Enumerazioni pubblicate
Una volta pubblicata l’isola, alcuni comportamenti delle enumerazioni chiuse e aperte contrassegnate con lo specificatore <persistable> vengono automaticamente corretti.
Enumerazioni chiuse:
Non puoi modificarle in
<open>.Non puoi rinominarle e aggiungere, riordinare o rimuovere i loro valori.
Se non specificato altrimenti, puoi aggiungere lo specificatore
<closed>.
Enumerazioni aperte:
Puoi aggiornarle trasformandole in un'enumerazione chiusa aggiungendo lo specificatore
<closed>.Puoi aggiungere e riordinare i loro valori.
Non puoi rinominare o rimuovere i loro valori.
Non puoi utilizzarle nelle istruzioni case senza un case predefinito.