Not logged inClonkspot Forum
Forum Home Help Search Register Login
Up Topic Deutsch / Hilfestellung / [Gelöst] liste2 = liste1 , Zeiger oder echte Kopie?
- - By Serpens66 (More than 200 posts.) Date 20.03.2016 15:24 Edited 20.03.2016 16:36
Hey, nur ne kurze Frage zur Programmierlogik:

//Hängt einen Wert an den Array an
global func ArrayAdd(& anArray, xnNew, bool bNoDuplicates)
{
  if (GetType(anArray) != C4V_Array)
    return -1;
  if (bNoDuplicates)
  {
    var dTemp = ArrayDataIndex(anArray, xnNew);
    if (dTemp != -1)
      return dTemp;
  }
  anArray[GetLength(anArray)] = xnNew;
  return GetLength(anArray) - 1;
}
liste1 = ["hallo"]
liste2 = liste1
ArrayAdd(liste2,"tschüss")


Ändert sich dabei nun auch Liste1? Oder nur Liste2?

edit: es sind local oder static variablen, deswegen ists wichtig.
Parent - - By Jan (More than 50 posts.) Date 20.03.2016 17:50

>Ändert sich dabei nun auch Liste1? Oder nur Liste2?


Dazu steht in der Doku:

>Wird ein Array einer Variablen zugewiesen oder einer Funktion übergeben, bekommt diese Variable eine eigene Kopie des Arrays.


ArrayDataIndex brauchst du übrigens nicht, sowas ist schon eingebaut: http://wiki.nosebud.de/wiki/Undokumentiertes#GetIndexOf
Parent - By Serpens66 (More than 200 posts.) Date 20.03.2016 19:07
ah alles klar, danke dir :)
Die globalen funktionen habe ich fertig übernommen, gut möglich, dass die etwas älter sind. Solange sie funktionieren ist alles gut :)
Dennoch danke für den Hinweis ;)
- By Serpens66 (More than 200 posts.) Date 20.03.2016 15:27
und eine ähnliche Problemstellung:

//Verschmiltz zwei Arrays
global func ArrayAddArray(& anArray, array anArray2, bool bNoDuplicates)
{
  if (GetType(anArray) != C4V_Array)
    return -1;
  if (GetType(anArray2) != C4V_Array)
    return -1;
  if (!GetLength(anArray2))
    return GetLength(anArray);
  for (var xTemp in anArray2)
    ArrayAdd(anArray, xTemp, bNoDuplicates);
  return GetLength(anArray);
}
liste1 = ["hallo"]
liste2 = ["tschüss"]
liste3 = liste1
ArrayAddArray(liste3,liste2)


Ziel ist es, die beiden listen 1 und 2 zu kombinieren, ohne die liste1 und liste2 selbst zu verändern. Geht das so?
Up Topic Deutsch / Hilfestellung / [Gelöst] liste2 = liste1 , Zeiger oder echte Kopie?

Powered by mwForum 2.29.7 © 1999-2015 Markus Wichitill