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.update

Looks up key; if it exists applies the update callable else evaluates the create callable and adds it to the associative array

void update(K, V, C, U) (
  ref V[K] aa,
  K key,
  scope C create,
  scope U update
if (is(typeof(create()) : V) && (is(typeof(update(aa[K.init])) : V) || is(typeof(update(aa[K.init])) == void)));


aa The associative array.
key The key.
create The callable to apply on create.
update The callable to apply on update.


auto aa = ["k1": 1];

aa.update("k1", {
    return -1; // create (won't be executed)
}, (ref int v) {
    v += 1; // update
writeln(aa["k1"]); // 2

aa.update("k2", {
    return 0; // create
}, (ref int v) {
    v = -1; // update (won't be executed)
writeln(aa["k2"]); // 0


Walter Bright, Sean Kelly


Boost License 1.0.