UnmappedIsland ソースリファレンス - v0.1.0
    検索インデックスを準備しています...

    クラス NameRegistry<Id>

    YAML上の識別子(ObjectDef名・プロパティ名・スロット名など)と、実行時に扱うグローバルIDを 相互変換する。「名前の空間」ごとに1つ用意する(WorldCodexが持つ名前空間ごとに別インスタンス)。 ロード完了後はinternを呼ばず、読み取り専用として扱う想定。

    型引数はこの名前空間が配るIDの型(GlobalId)。素の number とIDの境界はこのクラスの中 だけ——名前から引く経路しか外に開いていないので、YAMLに書かれた数・生成物から読んだ数・URLの 数値が、そのままIDとして通ることがない。既定を持たないのは、既定を置くと型引数を書き忘れた 名前空間が素の number を配り、そこだけ他の名前空間のIDを受け取れるようになるため。

    in out(不変)を外すと、種類の付いた名前空間を素の number の名前空間へ広げられる ——メソッドの引数は既定では双変なので、種類を選んで引く と書いた三項の型が NameRegistry<number> へ落ち、そこから先は素の数が通る。境界がこのクラスの中だけであることを 保っているのはこの2語。

    型パラメーター

    • in out Id extends number

    実装

    インデックス
    idToName: string[] = []
    nameToId: Map<string, Id> = ...
    • get ids(): readonly Id[]

      配ったIDを、配った順(=宣言順)に。IDの並びが要る側はこれを読む——countまで添字を数える 形で書くと、そこが素の数からIDを組み立てる場所になり、境界がこのクラスの外へ出る。

      戻り値 readonly Id[]

    • 名前を登録し、そのグローバルIDを返す。登録済みなら既存のIDを返す(冪等)。

      パラメータ

      • name: string

      戻り値 Id

    • 登録されていないIDならundefined。使うのは、この名前空間が配ったとは限らない数を引くとき ——プロパティの「値」をIDとして読んだ先(WorldCodex.trySymbolNameOfPropertyValue)は著者が書いた数なので、 どの名前も指していないことがありうる。

      パラメータ

      戻り値 string | undefined