Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-09-2004, 21:56   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 10
Exclamation Arrays kopieren - gibt`s denn *Zeiger in Flash!?

arr = [0,1,2,3];
cop = [];
cop = arr;
obj = {c:cop};
trace(obj.c.join());
arr[0]++;
cop[0]++;
trace(obj.c.join());
trace(arr.join());
obj.c[0]++;
trace(arr.join());

output:
0,1,2,3
2,1,2,3
2,1,2,3
3,1,2,3

Und wenn`s so ist, kann man sich drauf verlassen?
Ist dieses Verhalten irgendwo dokumentiert?
Gut möglich, daß ich da was überlesen habe.

Ist ziemlich dringend.

Danke im Voraus,
verunsichert,
cable.

Geändert von cable (22-09-2004 um 22:20 Uhr)
cable ist offline   Mit Zitat antworten
Alt 22-09-2004, 22:56   #2 (permalink)
nerdig working
 
Benutzerbild von michael
 
Registriert seit: Jul 2001
Ort: Hamburg
Beiträge: 5.832
hallo, was genau willst du wissen?

arrays sind referenzobjekte.
speicherst du die referenz in einer variablen, und veränderst den array, wird immer das original beeinflusst.

arrays kopiert man indem man sie durchläuft und die inhalte kopiert.
bei eindimensionsionalen array reicht hingegen schon ein einfaches concat:
ActionScript:
  1. arr = [0, 1, 2, 3];
  2. cop = [];
  3. cop = cop.concat (arr);
  4. cop[1] = 99;
  5. trace (arr);
  6. trace (cop);
michael ist offline   Mit Zitat antworten
Alt 23-09-2004, 00:40   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2003
Beiträge: 10
Danke für die schnelle Antwort.
Statt concat habe ich:
cop = arr.slice(0);
benutzt.
Das verhindert diese ominöse Referenzierung.

Worum es mir hauptsächlich ging, war eine Klärung dessen, womit ich
es hier genau zu tun habe. Gibts denn da bei Macromedia nicht
irgendwelche Dokumentationen?!
Hab`in der lang. ref. nichts gefunden. Gewöhnlich ist es doch so,
daß die Art des Kopierens/Referenzierens beeinflusst werden kann.
Hier scheint es aber Typen-bezogen festgelegt zu sein. Aber welche
Typen (vermutlich "object" ; )), und was passiert bei Instanzierung,
Vererbung usw. ...

Man muß doch wissen, was man macht. Und wenn ich das genau
wüsste, dann könnt man`s ja auch nutzen,
ist ja nicht von vornherein schlecht ... wenn ich`s länger überdenke,
sogar ganz im Gegenteil ...

Weiterhin gespannt auf Auskunft,
cable.
cable ist offline   Mit Zitat antworten
Alt 23-09-2004, 02:16   #4 (permalink)
All-rounder
 
Benutzerbild von thebiz
 
Registriert seit: Mar 2004
Ort: Bayerische Rhön
Beiträge: 2.507
Hi.

Die Frage würde ich mal hier im OOP Forum
stellen.
Von Zeigern habe ich vor kurzem mal was
im Zusammenhang mit C oder C++ gelesen.
__________________

--------------------------------
Ich klicke, ergo bin ich. (me)
--------------------------------
thebiz ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele