PDA

Volledige versie bekijken : Variabele variabelenaam


elguapo
%Europe/Berlin %498 %2005, 11:58
Ik probeer dmv een for lus een serie objecten aan te maken:
for(var i:Number = 0; i<theArray.length; i++) {

var ["toko"+i]:Locatie = new Locatie();

// nog meer code

}Ik krijg hierbij een "Identifier expected" error. Hoe krijg ik het voor elkaar om mijn objecten met de goede naam aan te maken (toko0, toko1, toko2 etc)?

Jordy
%Europe/Berlin %504 %2005, 12:07
this["toko"+i] ?? werkt dat?

elguapo
%Europe/Berlin %507 %2005, 12:10
Had ik al geprobeerd, maar geeft dezelfde error.

SaphuA
%Europe/Berlin %507 %2005, 12:10
Je kunt op deze manier geen 'var' gebruiken, dus het wordt iets als:
this["toko"+i]:Locatie = new Locatie();

elguapo
%Europe/Berlin %513 %2005, 12:18
Thnx voor de snelle reacties, maar ook

var this["toko"+i]:Locatie = new Locatie();

werkt niet :S

Jordy
%Europe/Berlin %513 %2005, 12:19
Je kunt op deze manier geen 'var' gebruiken, dus het wordt iets als:
this["toko"+i]:Locatie = new Locatie();

ahja, zoiets bedoelde k ook ;) alleen is niet echt duidelijk geworden denk ik bij Elguapo 8D

Dauntless
%Europe/Berlin %513 %2005, 12:19
En op die manier (van Saphua) kan je ook geen type meegeven, dus:


this["toko"+i] = new Locatie();

elguapo
%Europe/Berlin %520 %2005, 12:29
Dat werkt, maar....

in class Locatie heb ik een function setAdres(adr), die werkt nu niet meer :S

/me begint net met OOP, tis toch wat lastiger dan gedacht.

Fatty Owl
%Europe/Berlin %527 %2005, 12:38
Dat ligt normaal niet aan de manier waarop je er een instance van maakt. er zit dan gewoon een foutje in je class. :)

Dauntless
%Europe/Berlin %532 %2005, 12:46
Normaal:

this["toko"+i] = new Locatie();
this["toko"+i].setAdres("belgie");

Of is het een private functie? Want dan zit er inderdaad een fout in je classe :).

elguapo
%Europe/Berlin %536 %2005, 12:52
ik heb nu dit:
class Locatie {

var adres:String;

function setVar(adr) {
this.adres = adr;
}
}Als ik 't aanmaak via var toko:Locatie = new Locatie;
toko.setVar("blaat");geeft trace(toko.adres) de waarde "blaat". Via this["toko"+i] = new Locatie();
this["toko"+i].setVar("blaat"); geeft trace (toko0.adres) "undefined". Hoe los ik dat op?

De functie setVar wordt overigens wel uitgevoerd, en het argument wordt ook goed meegegeven.

Dauntless
%Europe/Berlin %553 %2005, 13:17
Hier werkt het gewoon...

elguapo
%Europe/Berlin %554 %2005, 13:18
Hmm, /me is off debuggen dan :P Thnx iig!

Dauntless
%Europe/Berlin %559 %2005, 13:25
class Foo
{
var adres = "";
public function Foo ()
{
}
public function setVar (pvar)
{
this.adres = pvar;
}
}

for (var i = 0; i<10; i++) {
this["toko"+i] = new Foo();
this["toko"+i].setVar("jeroen");
}
trace(this.toko0.adres);


Een gok: je doet daar iets met een array (theArray), ben je de waarden uit die array aan het doorgeven naar de setVar method? Misschien zit je array vol undefineds of zo?

elguapo
%Europe/Berlin %560 %2005, 13:27
Nee, ik refereerde niet goed: _root["toko"+1] werkt wel. Thnx!