El tipo option puede contener un valor o estar vacío.
En el ejemplo que ponemos a continuación, MaybeANumber es un entero opcional ?int que no contiene ningún valor. Un nuevo valor para MaybeANumber se establece entonces en 42.
var MaybeANumber : ?int = false # Valor opcional no establecido.
set MaybeANumber := option{42} # Se le asigna el valor 42.
|
Crear una opción: puedes inicializar una opción con uno de los elementos que se indican a continuación.
Especifica el tipo añadiendo |
|
Acceder a un elemento en una opción: utiliza el operador de consulta ? con la opción, como en 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 y, por lo tanto, se debe utilizar en un contexto de fallo. |
A continuación se muestra un ejemplo de uso de un tipo de opción para guardar una referencia a un jugador generado y, cuando se genera un jugador, hacer que el dispositivo activador reaccione:
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # Valor opcional no establecido.
@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
Una opción es persistente si su valor lo es, lo que significa que puedes usarlas en tus variables weak_map de tu ámbito de módulo y hacer que sus valores se mantengan a lo largo de las sesiones de juego. Para obtener más información sobre la persistencia en Verse, consulta la sección Cómo utilizar datos persistentes en Verse.