Skip to end of metadata
Go to start of metadata

<RetVar> = Das neue Array mit den gewählten Inhalten. 
<Var/Array> = Das Array, von dem die Inhalte geholt werden sollen. 
<Var/Number> = Das erste Element des geforderten Inhalts. 
<Var/Number> = Das letzte Element des geforderten Inhalts


Erstellt ein neues Array und weist es der Variable <RetVar> mit dem geforderten Inhalt <Var/Array> zu. Das erste Element ist dabei die erste <Var/Number> und das letzte Elemente die zweite <Var/Number>
Das neue Array ist vollständig angelegt. Eine vorherige Verwendung des Befehls <RetVar> = array alloc: size = <Var/Number> ist daher unnötig. 

Das geklonte Array ist unabhängig vom Quellarray, was Ziel dieses Befehls ist. Hierbei gibt es jedoch etwas zu beachten. Siehe dazu Beispiel 2.

Beispiel 1

Icon

$clone.array = clone array $array.1 : index 5 ... 10 

 $clone.array enthält nun die Elemente  5678, 9 und 10 aus dem Array $array.1.


Wie in diesem Artikel beschrieben, teilen sich Arrays die über eine normale Zuweisung kopiert werden ($array2 = $array1) ihre Daten. 
Der "clone array"-Befehl hingegen erstellt eine unabhängige Kopie, indem er jedes Element des Quellarrays kopiert. 
Dabei ist jedoch zu beachten, dass wenn ein Element des Quellarrays selbst ein Array ist, die Daten dieses geschachtelten Arrays wieder zwischen dem Quell- und dem geklonten Array geteilt werden. 
Das folgende Beispiel verdeutlicht dies: 

Beispiel 2

Icon

$nested = create new array, arguments='Ich bin geschachtelt'nullnullnullnull 
$array = create new array, arguments=123$nestednull 
$clone = clone array $array: index 0 ... 3 
$clone[3][0] = 'Ich bin geschaltet und werde geteilt' 

$str = $array[3][0
write to player logbook $str 

Mit diesem Beispiel wird 'Ich bin geschaltet und werde geteilt' ins Logbuch geschrieben, obwohl das Array der "höchsten Ebene" geklont wurde.

 

Write a comment…