Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-10-2006, 11:20   #1 (permalink)
new user
 
Benutzerbild von PinkDragon
 
Registriert seit: Oct 2005
Beiträge: 140
Liegts an der Funktion oder an Arrays überhaupt?

Folgendes Script: (nur zum Veranschaulichen)
PHP-Code:
function irgendwas(wert){
    
wert[0] = 5;
    return(
wert[0]);
}

var 
test:Array = new Array(1);
trace(test); //Ausgabe: 1
irgendwas(test);
trace(test); //Ausgabe: 5 
Bei der Funktion übergibt er scheinbar nur einen Verweis auf das Grundarray.
Warum, bzw kann ich das irgendwie unterbinden? (ausser Speicherersparnis) Bei anderen Variablen (Numbers) funktioniert alles ganz normal.

Meine Lösung war:
PHP-Code:
function irgendwas(wert){
    var 
new_wert:Array = new wert;  //Wusste gar nicht, dass "new wert" klappt :P
    
new_wert[0] = 5;
    return(
new_wert);

Ist aber imho unschön...
PinkDragon ist offline   Mit Zitat antworten
Alt 01-10-2006, 11:28   #2 (permalink)
mod_rewrite
 
Benutzerbild von sonar
 
Registriert seit: Feb 2003
Ort: München
Beiträge: 15.621
Ich versteh zwar nicht ganz, was du vorhast, aber es liegt "an Arrays überhaupt": komplexe Datentypen (Object, Array) werden per Referenz übergeben, während primitive Datentypen (Number, String) per Wert übergeben werden.
Darum kann man ein Array bspw. auch nicht so einfach kopieren...
PHP-Code:
var a:Array = new Array(123);
var 
b:Array = a;
b[0] = 5;
trace(a); // --> 5, 2, 3 
__________________
RTFM
Wie man Fragen richtig stellt.

Achim Bindannmalweg

Money makes the world go round, fear makes it turn much faster.
(New Model Army)
sonar ist offline   Mit Zitat antworten
Alt 01-10-2006, 11:35   #3 (permalink)
Banned
 
Benutzerbild von ballaballa
 
Registriert seit: Sep 2006
Beiträge: 793
blöde frage was sucht das return überhaupt dadrin?


und wenn du nur den wert übergeben möchtest warum übergibst du dann das ganze objeckt?

PHP-Code:
var test:Array = new Array(1);
bla irgendwas(test.toSting());
trace(bla+"\n"+test)

function 
irgendwas(wert){
meinWertwert.split(",")
    
meinWert[0] = 5;
    return(
meinWert[0]);

so müsste es gehen
zwar auch nicht schön aber in deinem beispiel übergibst du ein objekt hier nur einen wert werte kann man aber immer nur als string oder integer übergeben!
ballaballa ist offline   Mit Zitat antworten
Alt 01-10-2006, 16:42   #4 (permalink)
new user
 
Benutzerbild von PinkDragon
 
Registriert seit: Oct 2005
Beiträge: 140
Öhm... Die Funktion da oben hatte null Sinn. War nur zu Demonstrationszwecken da
und warum ich das ganze Objekt übergebe? Wei ich in der originalen Funktion das ganze Objekt brauche :P Und imho hat es wenig sinn, das Array in einen String zu convertieren und den (oder das?) String danach zu zerlegen...

@sonar Danke. Alle Fragen beantworted

Geändert von PinkDragon (01-10-2006 um 16:45 Uhr)
PinkDragon ist offline   Mit Zitat antworten
Alt 01-10-2006, 17:15   #5 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.322
Zitat:
var new_wert:Array = new wert; //Wusste gar nicht, dass "new wert" klappt :P
geht ja auch nicht.

Zitat:
Weil ich in der originalen Funktion das ganze Objekt brauche
http://www.seibsprogrammladen.de/fra...orithmen/Array
Array duplizieren

bzw. aus dem übergebenen array nur lesen und in ein neues reinschreiben.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 01-10-2006, 17:55   #6 (permalink)
new user
 
Benutzerbild von PinkDragon
 
Registriert seit: Oct 2005
Beiträge: 140
geht ech net :P
Es brachte nur keinen Fehler, weil ich um alles zu Sortieren einzelne Scriptteile in *.as Files speicherte und diese includierte. (Er gab immer nur als Fehler zurück, dass die Datei nur Classes enthalten darf :P)

Jetzt weis ich auch, warum meine KI nicht funzt
Und Danke für den Link.
PinkDragon 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 19:30 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele