Переменная типа option может содержать одно значение или не содержать ничего.
В следующем примере переменная MaybeANumber является опциональной целочисленной переменной типа ?int, не содержащей значения. Затем переменной MaybeANumber присваивается значение 42.
var MaybeANumber : ?int = false # значение для option не задано
set MaybeANumber := option{42} # присвоено значение 42
|
Создание переменной типа option: инициализировать переменную типа option можно одним из следующих способов:
При объявлении option укажите ожидаемый тип значения, вписав его после |
|
Обращение к элементу переменной типа option: при работе с переменными типа option используйте оператор запроса ?, например MaybeANumber?. Обращение к значению, хранящемуся в переменной типа option, является выражением с неоднозначным результатом, так как такая переменная может не содержать значения, поэтому данную операцию следует выполнять в контексте, допускающем неоднозначность. |
Ниже приведён пример использования типа option для сохранения ссылки на появившегося игрока, а также для инициирования реакции устройства «Триггер» в момент появления игрока:
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # значение для option не задано
@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)
Сохраняемый тип
Переменные типа option являются сохраняемыми. Это означает, что вы можете использовать их в переменных weak_map, входящих в область видимости модуля, и их значения будут сохраняться в течение всех игровых сессий. Подробнее о сохраняемых элементах в Verse см. в статье Использование сохраняемых данных в Verse.