On Wednesday, 15 January 2014 at 20:34:32 UTC, Andre wrote:
Hi,

I checked std.algorithm but have no glue which
functions I can use to rewrite following code
with some nice algorithm functions.

I have an array of structs. I want to check for
a specific key and if found I change the value.
If it is not found I add the entry.

Kind regards
André


struct Data{
        int key;
        int value;
}

void main(){
        Data[] entries = [Data(1,1),Data(2,2)];
        bool found;

        foreach(entry;entries){
                if (entry.key == 3){
                        entry.value = 42;
                        found = true;
                }
        }

        if (found == false){
                entries ~= Data(3,42);
        }
}


You can use canFind.

import std.algorithm;

struct Data{
   int key;
   int value;
}

void main()
{
   auto entries = [Data(1,1),Data(2,2)];

   if(!entries.canFind!(x => x.key == 3))
      entries ~= Data(3, 42);
}

Reply via email to