Der Typ option kann einen Wert enthalten oder leer sein.
Im folgenden Beispiel ist MaybeANumber eine optionale Ganzzahl ?int, die keinen Wert enthält. Ein neuer Wert für MaybeANumber wird dann auf 42 gesetzt.
var MaybeANumber : ?int = false # unset optional value
set MaybeANumber := option{42} # assigned the value 42
|
Erstellen einer Option: Du kannst eine Option mit einer der folgenden Möglichkeiten initialisieren:
Gib den Typ an, indem du |
|
Zugriff auf ein Element in einer Option: Verwende den Abfrageoperator ? mit der Option, z. B. MaybeANumber?. Der Zugriff auf den in einer Option gespeicherten Wert ist ein fehlbarer Ausdruck, da in der Option möglicherweise kein Wert vorhanden ist, und muss daher in einem Fehlerkontext verwendet werden. |
Nachfolgend ein Beispiel für die Verwendung eines Optionstyps, um einen Verweis auf einen gespawnten Spieler zu speichern und, wenn ein Spieler gespawnt wird, das Triggergerät reagieren zu lassen:
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # unset optional value
@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)
Dauerhafte Typen
Eine Option ist dauerhaft, wenn ihr Wert dauerhaft ist, was bedeutet, dass du sie in deiner modulbereichsbezogenen Variable weak_map verwenden kannst und ihre Werte dann über Spielsitzungen hinweg erhalten bleiben. Weitere Details zum Fortbestand in Verse findest du unter Verwenden dauerhafter Daten in Verse.