連想配列

Dにはハッシュマップとしても知られる連想配列が組み込みで存在します。 キーの型がstringで値の方がintである連想配列は下記のように宣言されます:

int[string] arr;

値はそのキーによってアクセスでき、したがって設定できます:

arr["key1"] = 10;

キーが連想配列内にあるかどうかをテストするのに、in式が使えます:

if ("key1" in arr)
    writeln("Yes");

in式は値が見つかった時はそのポインタを、そうでなければnullポインタを返します。 したがって存在チェックと書き込みは便利に組み合わせることができます:

if (auto val = "key1" in arr)
    *val = 20;

存在しないキーへのアクセスは即座にアプリケーションを停止させる RangeErrorを発生させます。デフォルト値による安全なアクセスには、 get(key, defaultValue)が使えます。

連想配列は配列のような.lengthプロパティを持ち、キーによって項目を 削除する.remove(val)メンバを持ちます。 特殊な.byKey.byValueレンジを探索することは読者への練習問題とします。

掘り下げる

rdmd playground.d