Feature to get or add value to an associative array.

Giles Bathgate giles.bathgate at gmail.com
Tue Apr 17 22:33:18 UTC 2018


On Tuesday, 17 April 2018 at 21:40:55 UTC, Giles Bathgate wrote:
> Rust calls its version of this function `or_insert_with` (blegh)

Of course, a rustic API could be built atop this PR:

template entry(K, V)
{
     static struct Entry
     {
         alias get this;
         V[K] aa;
         K key;
         V get()
         {
             return aa[key];
         }
         V orInsert()
         {
             return aa.getOrAdd(key);
         }
         V orInsertWith(lazy V value = V.init)
         {
             return aa.getOrAdd(key, value);
         }
     }

     Entry entry(ref V[K] aa, K key)
     {
         return Entry(aa,key);
     }
}


void main()
{
     class C{}
     C[string] aa;
     auto v1 = aa.entry("foo");
     auto v2 = aa.entry("bar").orInsert();
     auto v3 = aa.entry("baz").orInsertWith(new C);
}

But I think, this would be out of scope.




More information about the Digitalmars-d mailing list