Il tipo option
può contenere un valore o può essere vuoto.
Nell'esempio seguente, MaybeANumber
è un intero ?int
opzionale che non contiene alcun valore. Il nuovo valore di MaybeANumber
viene quindi impostato su 42
.
var MaybeANumber : ?int = false # valore opzionale non impostato
set MaybeANumber := option{42} # assegnazione del valore 42

|
Creazione di un'opzione: puoi inizializzare un'opzione con quanto segue:
Specifica il tipo aggiungendo |
|
Accesso a un elemento di un'opzione: utilizza l'operatore query ? con l'opzione, ad esempio MaybeANumber? . L'accesso al valore memorizzato in un'opzione è un'espressione fallibile perché potrebbe non esserci un valore nell'opzione, e quindi deve essere utilizzata in un contesto di errore. |
Di seguito è riportato un esempio di utilizzo di un tipo di opzione per salvare un riferimento a un giocatore generato e, quando viene generato un giocatore, far reagire il dispositivo di attivazione:
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # valore opzionale non impostato
@editable
PlayerSpawn : player_spawner_device = player_spawner_device{}
@editable
Trigger : trigger_device = trigger_device{}
OnBegin<override>() : void =
PlayerSpawn.PlayerSpawnedEvent.Subscribe(OnPlayerSpawned)
OnPlayerSpawned(Player : player) : void =
set SavedPlayer = option{Player}
if (TriggerPlayer := SavedPlayer?):
Trigger.Trigger(TriggerPlayer)
Tipo persistente
Un'opzione è persistente se il suo valore è persistente, il che significa che è possibile utilizzarla nelle variabili weak_map
con ambito modulo e fare in modo che i relativi valori vengano mantenuti tra le sessioni di gioco. Per maggiori dettagli sulla persistenza in Verse, consulta Utilizzo dei dati persistenti in Verse.