EnglishGermanFrenchRussianPolishItalianSpanish
Log inRegister
 
<RetVar> = clone array <Var/Array>: index <Var/Number> … <Var/Number>
Post new topic This topic is locked: you cannot edit posts or make replies.
View previous topic :: View next topic
Author Message
mark_a_condren





Joined: 03 Aug 2005
Posts: 1385 on topic
Location: Newcastle - Australia
Thank you for registering your game
modified
PostPosted: Sat, 11. Sep 10, 17:31    Post subject: <RetVar> = clone array <Var/Array>: index <Var/Number> … <Var/Number> Reply with quote Print

<RetVar> = clone array <Var/Array>: index <Var/Number> ... <Var/Number>


<RetVar> = The new array containing the selected contents.
<Var/Array> = The array to retrieve the contents from.
<Var/Number> = The first element of the required contents.
<Var/Number> = The last element of the required contents.


Creates a new array, assigning it to <RetVar> with the required contents of <Var/Array>. The starting element being the first <Var/Number> and ending element being the second <Var/Number>.
This new array is allocated when this instruction executes, so a previous call to <RetVar> = array alloc: size = <Var/Number> is unnecessary.

The resulting clone is independant of the source array, which is kind of the whole point of this command. This however dose have some ... Quirks ... see example 2.


Examples:

Example 1.

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

$clone.array will be a new array containing elements 5, 6, 7, 8, 9 and 10 from array $array.1.

-------------------------------------------------------------------------------------

Example 2.

As described in this topic, arrays copied via normal assignment ($array2 = $array1) share their data.
The clone array command on the other hand, will create an independant copy by copying every element of the source array.
It's important to note, that if an element of the source array is itself an array, the data of this nested array will again be shared between the source and the cloned array.
An example should clarify this:

$nested = create new array, arguments='I'm nested', null, null, null, null
$array = create new array, arguments=1, 2, 3, $nested, null
$clone = clone array $array: index 0 ... 3
$clone[3][0] = 'I'm nested and shared'

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

This will write 'I'm nested and shared' to the logbook, although you cloned the top-level array.


Command Location:

    »» General Commands
      »» Arrays
      <RetVar> = clone array <Var/Array>: index <Var/Number> ... <Var/Number>




Last edited by mark_a_condren on Fri, 31. Dec 10, 13:51; edited 3 times in total
Back to top
View user's profile Send private message Send e-mail
Juggernaut93



MEDAL

Joined: 17 Jul 2011
Posts: 2207 on topic
Location: DeVries/Verità Accecante/Corona Ardente
Thank you for registering your game
PostPosted: Mon, 3. Sep 12, 18:17    Post subject: [39]286717 Reply with quote Print

<RetVar> = clone array <Var/Array>: index <Var/Number> ... <Var/Number>


<RetVar> = Il nuovo array contenente i contenuti selezionati.
<Var/Array> = L'array da cui recuperare i contenuti.
<Var/Number> = Il primo elemento dei contenuti richiesti.
<Var/Number> = L'ultimo elemento dei contenuti richiesti.


Crea un nuovo array assegnandolo a <RetVar> con i contenuti richiesti di <Var/Array>. L'elemento iniziale è il primo <Var/Number>, mentre l'elemento finale è il secondo <Var/Number>.
Questo nuovo array viene allocato quando quest'istruzione viene eseguita, perciò non è necessaria una precedente chiamata a <RetVar> = array alloc: size = <Var/Number>.

Il clone risultante è indipendente dall'array sorgente, che è un po' il punto centrale di questo comando. Ci sono però alcune particolarità (vedi l'esempio 2).


Esempi:

Esempio 1.

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

$clone.array sarà un uovo array contenente gli elementi 5, 6, 7, 8, 9 e 10 dell'array $array.1.

-------------------------------------------------------------------------------------

Esempio 2.

Come descritto in questo topic, gli array copiati tramite normale assegnazione ($array2 = $array1) condividono i loro dati.
Il comando 'clone array', d'altronde, creerà una copia indipendente copiando ogni elemento dell'array sorgente.
È importante notare che, se un elemento dell'array sorgente è esso stesso un array, i dati di questo array nidificato saranno ancora una volta condivisi tra l'array sorgente e l'array clonato.
Un esempio dovrebbe chiarire tutto ciò:

$nested = create new array, arguments='I'm nested', null, null, null, null
$array = create new array, arguments=1, 2, 3, $nested, null
$clone = clone array $array: index 0 ... 3
$clone[3][0] = 'I'm nested and shared'

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

Ciò scriverà 'I'm nested and shared' nel diario di bordo, sebbene tu abbia copiato l'array di livello superiore.


Posizione dell'istruzione nella lista:

    »» General Commands
      »» Arrays
      <RetVar> = clone array <Var/Array>: index <Var/Number> ... <Var/Number>


Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic This topic is locked: you cannot edit posts or make replies.
 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You cannot download files in this forum
Control Panel
Login Data
The time now is Fri, 28. Jul 17, 00:44

All times are GMT + 2 Hours


Board Security

Copyright © EGOSOFT 1989-2017
Powered by phpBB © 2001, 2005 phpBB Group
Template created by Avatar & BurnIt!
Debug: page generation = 4.89577 seconds, sql queries = 16