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.

Reply via email to