Tips : initialiser pluseurs propriétés en même temps
Par -Alexandre LEGOUT aka LAlex- le lundi, décembre 1 2003, 15:21 - AS2 - Lien permanent
Du temps de mon premier pathfinder, j'avais crée une petit classe Point2, qui contenait des coordonnées. Je voulais également qu'elle soit dynamique, afin d'y mettre les propriétés que je voulait. Le problème était de taper 15 lignes de codes s'il y avait un nombre important de propriétés, et j'ai donc crée cette petite méthode setter pour me faciliter la vie.
dynamic class Dummy {
Rien de bien fantastique dans ces quelques lignes, mais c'est son utilisation qui est bien pratique :
function Dummy() {
// ....
}
function set props(o:Object) {
for (var curProp in o) {
this[curProp] = o[curProp];
}
}
function get props():String {
var prStr:String = "{ ";
var writeComma:Boolean = false;
for (var curProp in this) {
prStr += writeComma ? "," : "";
prStr += curProp+":"+this[curProp]+" ";
writeComma = true;
}
prStr += "}";
return prStr;
}
}var myObj = new MyClass();
myObj.props = {name:"LAlex", x:10, y:20};
trace(myObj.name); // LAlex
trace(myObj.x); // 10
trace(myObj.props); // {y:20 ,x:10 ,name:LAlex }
Evidemment, ce n'est pas ce qu'il y a de plus "propre", mais ca peut aider a faire des raccourcis dans le code assez pratiques.
Ca ne peut également pas être utilisé pour des initialisation multiples comme a=b=c. Pour pouvoir faire cela, il aurait fallu pouvoir retourner une valeur dans le setter, mais ce n'est pas possible comme je l'ai déjà dit dans ce blog ...
Alors tant qu'à faire, autant que ca serve pour faire un affichage "pratique" ! ![]()
Commentaires
with() est pas mal aussi, quitte à être tappé sur une ligne :
with(myObj) { name = "LAlex"; x = 10; y = 20; }C'est au moins aussi crade, mais c'est efficace aussi et ça évite une boucle sur l'objet à chaque passage...
J'ai aussi un peu de mal à saisir l'utilisation de get props(), c'est uniquement pour l'affichage en debug?
Oui, c'est uniquement pour de l'affichage, histoire de mettre quelque chose dans le get ... On fait souvent des getter sans setter (Read-only), mais l'inverse est plus rare, donc j'ai fais du remplissage on va dire !!!

Hello

Je fais exactement comme toi
Et franchement c'est vraiment le mieux pour définir rapidement des propriétés.
bye
Fil des commentaires de ce billet