option
型 には 1 つの 値 を含めることも、空にすることもできます。
次の例では、MaybeANumber
は値が入っていない任意指定の 整数 ?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 で持続データを使用する」を参照してください。