View source code
Display the source code in object.d from which this page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using local clone.

Function object.byKeyValue

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.

auto byKeyValue(T, K, V) (
  T aa
) pure nothrow @nogc @safe;

auto byKeyValue(T, K, V) (
  T* aa
) pure nothrow @nogc;

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.


aa The associative array.


A forward range referencing the pairs of the associative array.


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

writeln(sum); // 3


Walter Bright, Sean Kelly


Boost License 1.0.