2009-07-29 5 views
1

J'essaie de comprendre comment fonctionne ce morceau de code de Advanced Actionscript de Keith Peter. Essentiellement, il y a une boucle for pour diviser les paires clé/valeur séparées par:. Voici le code:Array.Split() avec les crochets [], du livre Advanced Actionscript Animation

var definition:Object = new Object(); 
for(var i = 0;i < tokens.length; i++) 
{ 
    var key:String = tokens[i].split(":")[0]; 
    var val:String = tokens[i].split(":")[1]; 
    definition[key] = val; 
} 

et jetons est un tableau de chaînes contenant des valeurs telles que:

["type:GraphicTile", "graphicClass:MapTest_Tile01"] 

La chose que je ne comprends pas est, quel est le significence de « [0] » et "[1]". Comment [1] indique que la chaîne Val doit contenir les données après la division ":" (la valeur, comme "GraphicTile" ou "MapTest_Tile01"), et [0] pointant vers les données avant la séparation (les clés comme " tapez "ou" graphicClass "). La référence ActionScript d'Adobe ne répertorie aucun paramètre pouvant être transmis à la méthode Array.split en utilisant des crochets comme celui-ci.

+1

quelqu'un sait si split est mis en cache? Cela semble générer deux fois le même tableau juste pour les indexer ... – CookieOfFortune

+0

Je doute qu'il soit en cache ou quelque chose comme ça, mais il semble que ce soit un exemple de code d'un livre, auquel cas il est probablement divisé deux fois par souci de clarté. –

Répondre

1

La méthode split() retourne un tableau des jetons créés en divisant la chaîne. Ce tableau est ensuite indexé avec [0] et [1] pour obtenir les premier et second membres. C'est exactement la même chose que les jetons [i] utilisés pour accéder au i ème membre de la matrice de jetons.

+0

Merci! Je suppose que je le regardais mal ... Je pensais que les paramètres passés entre crochets étaient passés à la méthode split, plutôt que d'être utilisés pour accéder aux valeurs du tableau retourné. Aimer la communauté ici, vous êtes très utiles! –

0

nick a donné la bonne réponse ...

comme CookieOfFortune a souligné implicitement, le code est vraiment bon ...

var definition:Object = new Object(); 
for(var i = 0;i < tokens.length; i++) 
{ 
    var parts:Array = tokens[i].split(":"); 
    var key:String = parts[0]; 
    var val:String = parts[1]; 
    definition[key] = val; 
} 

cela éviterait divise la chaîne deux fois ... peut-être aussi il est plus clair ce qui se passe ...

greetz

back2dos