On Sunday, 13 November 2022 at 17:10:23 UTC, DLearner wrote:
...
The slight generalisation shown at bottom also worked.
However, is there a way of avoiding the for-loop?
...
I don't have too much knowledge in D, but I think so. (My main
language is C).
Well, one way to make things "better" would be creating a
constructor inside that struct with opCall, something like this:
import std.stdio;
void main() {
struct test_struct {
char[] Txt;
static test_struct[] opCall(test_struct[] e){
auto _ = e.dup;
foreach(i,v; e[0].Txt){
_[0].Txt = e[0].Txt.dup;
}
return _;
}
}
test_struct[] A;
A.length = 1;
A[0].Txt.length = 1;
A[0].Txt[0] = 'X';
writeln(A);
auto B = test_struct(A);
writeln(A, B);
A[0].Txt[0] = 'Y';
writeln(A, B);
}
There still a loop over there, so let's wait for some advanced
users to destroy this. :)
Matheus.