Avatar billede jakwag Nybegynder
17. februar 2004 - 16:04 Der er 5 kommentarer og
1 løsning

private vars i class files kan findes med for.. in loop?

Hej

Ideen med en private var i en class file er vel at brugeren af classen hverken kan se eller ændre på den, medmindre vedkommende bruger getters og setters.

Men hvis man bruger et for.. in loop kan man godt. Er der nogen praktisk årsag til at det hænger sådan sammen?

et eksempel:

Class file:

class PrivateTest
{
    private var _myPrivate:String;
   
    public function PrivateTest(mp:String)
    {
        this.myPrivate = mp;
    }
   
    public function set myPrivate(mp:String):Void
    {
        this._myPrivate = mp;
    }
   
    public function get myPrivate():String
    {
        return _myPrivate;
    }
}

i fla:

var newTest:PrivateTest = new PrivateTest("tester");

trace(newTest.myPrivate); //virker som den skal
//trace(newTest._myPrivate); // giver en fejl som den skal


// her kan jeg så både ændre og se private vars?
for(prop in newTest)
{
    newTest[prop] = "Super";
    trace(prop+" : "+newTest[prop]);
}

: ) Jakob
Avatar billede jakwag Nybegynder
17. februar 2004 - 16:11 #1
HHhhmmm... men hvordan skulle det enelig ellers virke.. :)
Avatar billede barklund Nybegynder
17. februar 2004 - 17:56 #2
Det er KUN rent .fla mæssigt. Den sikrer i flashcompileren typecheck, at du ikke sætter værdier, som du ikke må. Men den er ikke mere intelligent end første led. For eksempel:

newTest["_myPrivate"] = "foo";

På samme måde virker typecheck også kun i et led (og således kan variabler sættes til en "fremmed" type):

var et_tal:Number = 5;
var en_ubekendt = et_tal;
var en_streng:String = en_ubekendt;
trace(typeof en_streng); // giver "number"

Så sådan er det bare ;)
Avatar billede jakwag Nybegynder
17. februar 2004 - 18:27 #3
ja, det er det vel - mere er der vel ikke at sige om det.. kom med et svar : )
Avatar billede barklund Nybegynder
17. februar 2004 - 18:29 #4
Helt i orden.

Altså alt hvad der hidrører fasttypning og private/public er kun typechecket i compileren - der findes slet ikke i SWF'en!
Avatar billede barklund Nybegynder
17. februar 2004 - 22:52 #5
Håber vi er enige - pudsigt nok var der en FlashCoders-tråd om det samme tidligere i dag :)
Avatar billede jakwag Nybegynder
18. februar 2004 - 17:04 #6
Helt enige. Når man ved at det ligger i compileren er der jo pludslig en masse der falder på plads. : )
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester