option 타입은 값 하나를 포함하거나 비어 있을 수 있습니다.
다음 예시에서 MaybeANumber 는 아무 값도 포함하지 않은 옵션 integer ?int 입니다. 그런 다음 MaybeANumber 는 새 값 42 로 설정됩니다.
var MaybeANumber : ?int = false # 설정되지 않은 옵션 값입니다.
set MaybeANumber := option{42} # 값 42를 할당했습니다.
|
|
|
옵션에서 엘리먼트에 액세스하기: MaybeANumber? 와 같이 쿼리 연산자 ? 를 옵션과 함께 사용합니다. 옵션에 저장된 값에 액세스하는 것은 실패 가능 표현식입니다. 옵션에 값이 없을 수도 있으므로 실패 컨텍스트에서 사용되어야 하기 때문입니다. |
다음 예시에서는 옵션 타입을 사용하여 생성된 플레이어에 대한 레퍼런스를 저장하고 플레이어가 생성될 때 트리거 장치가 반응하게 합니다.
my_device := class<concrete>(creative_device):
var SavedPlayer : ?player = false # 설정되지 않은 옵션 값입니다.
@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)
퍼시스턴스 타입
값이 퍼시스턴스일 경우 옵션은 퍼시스턴스입니다. 즉, 모듈 스코프 weak_map 변수에서 사용할 수 있고 값이 게임 세션 간에 유지된다는 의미입니다. Verse의 퍼시스턴스에 대한 자세한 내용은 Verse에서 퍼시스턴스 데이터 사용하기를 참고하세요.