Returns a forward range which will iterate over the key-value pairs of the associative array. The returned pairs are represented by an opaque type with .key and .value properties for accessing references to the key and value of the pair, respectively.

If structural changes are made to the array (removing or adding keys), all ranges previously obtained through this function are invalidated. The following example program will dereference a null pointer:

import std.stdio : writeln;

auto dict = ["k1": 1, "k2": 2];
auto kvRange = dict.byKeyValue;
writeln(kvRange.front.key, ": ", kvRange.front.value);    // Segmentation fault

Note that this is a low-level interface to iterating over the associative array and is not compatible withth the Tuple type in Phobos. For compatibility with Tuple, use std.array.byPair instead.

  1. auto byKeyValue(T aa)
  2. auto byKeyValue(T* aa)
    pure nothrow @nogc
    T : V[K]
    T* aa


aa T*

The associative array.

Return Value

Type: auto

A forward range referencing the pairs of the associative array.


auto dict = ["k1": 1, "k2": 2];
int sum;
foreach (e; dict.byKeyValue)
    assert(e.key[1] == e.value + '0');
    sum += e.value;

assert(sum == 3);