Associative Arrays 关联数组

D 语言具有内置的关联数组,也被称为哈希映射(HashMap)。一个键类型为 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