www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Copying and array into another

reply pascal111 <judas.the.messiah.111 gmail.com> writes:
I tried to copy an array into another without affecting in the 
original array when I try to change the value of any element of 
the new array, but I failed except with this way in the next code:

'''D
int[] x=[1,2,3];
     int[] y=x.filter!("a==a").array;

     y[1]=800;

     x.writeln;
     y.writeln;
'''
Aug 09 2022
next sibling parent reply Paul Backus <snarwin gmail.com> writes:
On Tuesday, 9 August 2022 at 18:33:04 UTC, pascal111 wrote:
 I tried to copy an array into another without affecting in the 
 original array when I try to change the value of any element of 
 the new array, but I failed except with this way in the next 
 code:

 '''D
 int[] x=[1,2,3];
     int[] y=x.filter!("a==a").array;

     y[1]=800;

     x.writeln;
     y.writeln;
 '''
A simpler way to do this is to use the array's built-in .dup method [1]: int[] x = [1, 2, 3]; int[] y = x.dup; y[1] = 800; writeln(x); // [1, 2, 3] writeln(y); // [1, 800, 3] [1] https://dlang.org/spec/arrays.html#array-properties
Aug 09 2022
parent pascal111 <judas.the.messiah.111 gmail.com> writes:
On Tuesday, 9 August 2022 at 18:41:52 UTC, Paul Backus wrote:
 On Tuesday, 9 August 2022 at 18:33:04 UTC, pascal111 wrote:
 I tried to copy an array into another without affecting in the 
 original array when I try to change the value of any element 
 of the new array, but I failed except with this way in the 
 next code:

 '''D
 int[] x=[1,2,3];
     int[] y=x.filter!("a==a").array;

     y[1]=800;

     x.writeln;
     y.writeln;
 '''
A simpler way to do this is to use the array's built-in .dup method [1]: int[] x = [1, 2, 3]; int[] y = x.dup; y[1] = 800; writeln(x); // [1, 2, 3] writeln(y); // [1, 800, 3] [1] https://dlang.org/spec/arrays.html#array-properties
I don't know how I forgot this or why it didn't come to my mind because I already indeed had read about ".dup"?! You are right!
Aug 09 2022
prev sibling parent pascal111 <judas.the.messiah.111 gmail.com> writes:
Edit "Copying an array into another" in the title.
Aug 09 2022