On Sunday, 11 September 2022 at 21:01:27 UTC, Salih Dincer wrote:
On Saturday, 10 September 2022 at 16:33:03 UTC, Erdem Demir
wrote:
I wish I could use ref DListOfA returnVal = .... but we can't
in D.
Can you please suggest alternatives?
I think you should try advanced update. Your flexibility and
what you can do are limited by your dreams. A couple delicious
code:
```d
import object, std.container;
struct A
{
double val;
bool isBig;
}
void main()
{
alias DListOfA = DList!A;
DListOfA returnVal;
//DListOfA[string] temp;/*
DListOfA[string] temp = [
"a": DListOfA( A(0) )
];//*/
auto a = A(6, true); // replacement element
temp.update("a", {
return DListOfA( A(0) ); // not updated: unsucceeded
but initialized
}, (ref DListOfA v) {
v = DListOfA( a ); // existing v has been replaced
returnVal = v;
assert(returnVal.front == a);
});
assert(is(typeof(temp["a"]) == DList!A));
}
```
SDB@79
I really like the possibilities of update as well but the
overhead is too much especially in this example. I am sorry to
say I found old "in" usage less complicated than that even I
think "in" is complicated. I liked the Steven's solution all this
code can be done via 2 lines only.