Typ option
może zawierać jedną wartość lub może być pusty.
W poniższym przykładzie MaybeANumber
jest opcjonalną liczbą całkowitą ?int
niezawierającą żadnej wartości. Następnie dla MaybeANumber
zostaje ustawiona nowa wartość 42
.
var MaybeANumber : ?int = false # cofnij ustawienie wartości opcjonalnej
set MaybeANumber := option{42} # przypisano wartość 42

|
Tworzenie opcji: Opcję można zainicjować z zastosowaniem jednego z następujących wariantów:
Aby określić typ, dodaj znak |
|
Uzyskiwanie dostępu do elementu w opcji: Można to zrobić, używając operatora zapytania ? w połączeniu z opcją, na przykład MaybeANumber? . Uzyskiwanie dostępu do wartości zapisanej w opcji jest wyrażeniem zawodnym, ponieważ w opcji może nie być żadnej wartości, dlatego należy je stosować w kontekście niepowodzenia. |
Poniżej przedstawiono przykład użycia typu opcji, aby zapisać odwołanie do zespawnowanego gracza, a po zespawnowaniu gracza wymusić reakcję aktywatora:
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # cofnij ustawienie wartości opcjonalnej
@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)
Typ możliwy do persystencji
Typ możliwy do persystencji option (opcja) jest możliwy do persystencji, jeśli jego wartość jest możliwa do persystencji, co oznacza, że można go użyć w zmiennych weak_map
o zasięgu modułowym i zachować ich wartości podczas sesji gry. Więcej informacji na temat persystencji w Verse znajdziesz w artykule Używanie persystentnych danych w Verse.