option
(seçenek) türü bir değer içerebilir veya boş olabilir.
Aşağıdaki örnekte MaybeANumber
hiçbir değer içermeyen bir ?int
isteğe bağlı tamsayısıdır. Bu durumda MaybeANumber
için yeni bir değer 42
olarak ayarlanır.
var MaybeANumber : ?int = false # ayarlanmamış isteğe bağlı değer
set MaybeANumber := option{42} # 42 değeri atandı

|
Seçenek oluşturma: Bir seçeneği aşağıdakilerden biriyle başlatabilirsin:
Seçenekte depolanması beklenen değer türünün önüne |
|
Option içindeki bir öğeye erişme: Seçenek ile birlikte ? sorgu işlecini kullan, örneğin MaybeANumber? . Seçenekte bir değer olmayabileceğinden bir seçenekte depolanmış değere erişmek bir başarısız ifadedir ve bu nedenle bir hata bağlamında kullanılmalıdır. |
Aşağıda, doğan bir oyuncuya yönelik referansı kaydetmek ve oyuncu doğduğunda tetikleyici cihazın tepki vermesini sağlamak için bir seçenek (option) türünün kullanıldığı bir örnek yer alıyor:
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # atanmamış isteğe bağlı değer
@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)
Kalıcı Tür
Değeri kalıcı olan bir seçenek kalıcıdır, yani bu değerleri hem modül kapsamına alınmış weak_map
değişkenleriyle kullanabilir hem de değerlerini farklı oyun oturumları arasında devam ettirebilirsin. Verse’te kalıcılık hakkında daha ayrıntılı bilgi için Verse’te Kalıcı Veriler Kullanma bölümüne bakabilirsin.