Le type option peut contenir une valeur ou peut être vide.
Dans l’exemple suivant, MaybeANumber est un nombre entier facultatif ?int qui ne contient aucune valeur. Une nouvelle valeur pour MaybeANumber est alors définie sur 42.
var MaybeANumber : ?int = false # valeur facultative non définie
set MaybeANumber := option{42} # valeur 42 affectée
|
Création d’une option : vous pouvez initialiser une option avec l’une des valeurs suivantes :
Spécifiez le type en ajoutant |
|
Accéder à un élément dans une option : utilisez l'opérateur de requête ? avec l'option, par exemple MaybeANumber?. Accéder à la valeur stockée dans une option est une expression faillible, car il est possible que l'option ne comporte aucune valeur et qu'elle doive donc être utilisée dans un contexte d'échec. |
Voici un exemple d'utilisation du type option pour enregistrer une référence à un joueur qui apparaît et, dès que le joueur apparaît, pour activer l'appareil Déclencheur :
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # valeur facultative non définie
@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)
Type persistant
Une option est persistante si sa valeur l'est, ce qui signifie que vous pouvez l'utiliser dans vos variables weak_map à étendue de module et faire persister leurs valeurs d'une session de jeu à une autre. Pour en savoir plus sur la persistance dans Verse, consultez Utiliser des données persistantes dans Verse.