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);
}