El tipo option puede contener un valor o estar vacío.
En el siguiente ejemplo, MaybeANumber es un entero opcional ?int que no contiene valor. Después, se define un nuevo valor para MaybeANumber en 42.
var MaybeANumber : ?int = false # valor opcional no definido
set MaybeANumber := option{42} # se asigna el valor 42
|
Crear una opción: puedes inicializar una opción con alguno de los siguientes:
Para especificar el tipo, agrega |
|
Acceder a un elemento en una opción: usa el operador de consulta ? con la opción, como MaybeANumber?. Acceder al valor almacenado en una opción es una expresión falible porque puede no haber ningún valor en la opción, así que se debe usar en un contexto de fallo. |
El siguiente es un ejemplo del uso de un tipo opción para guardar una referencia a un jugador generado y, cuando se genera el jugador, hacer que el dispositivo activador reaccione:
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # valor opcional no definido
@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)
Tipos persistentes
Una opción es persistente si su valor es persistente. Esto quiere decir que lo puedes usar en tus variables weak_map del módulo y hacer que sus valores persistan entre las sesiones de juego. Para más información sobre la persistencia en Verse, consulta Cómo usar datos persistentes en Verse.