Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!

Idiom #227 Copy a list

Create the new list y containing the same elements as the list x.

Subsequent modifications of y must not affect x (except for the contents referenced by the elements themselves if they contain pointers).

List<T> y = x.ToList();
List<Int32> y = new List<Int32>(x);
y = [...x];
type (foo), allocatable, dimension(:) :: y
y = x
import "slices"
y := slices.Clone(x)
y := make([]T, len(x))
copy(y, x)
let y = x.slice();
import java.util.ArrayList;
ArrayList<String> y = new ArrayList<>(x);
local function deepcopy(input)
 local t=type(input)
 if t~="table" then
  return input
 end
 local copy={}
 for k,v in pairs(input) do
  k=deepcopy(k)
  v=deepcopy(v)
  copy[k]=v
 end
 return copy
end
local y=deepcopy(x)
uses classes;
y.assign(x);
use Storable qw(dclone);
my @y = @x; # for simple arrays

# for complex arrays with references:
my @y = @{dclone(\@x)};
y = x[:]
y = x.copy()
y = x.dup
let y = x.clone();

New implementation...
< >
programming-idioms.org