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
and
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;
dict .clear;
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.
Parameters
Name | Description |
---|---|
aa | The associative array. |
Returns
A forward range referencing the pairs of the associative array.
Example
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
Authors
Walter Bright, Sean Kelly