Comment générer par lots des variables de mémoire affectées à partir de listes à l'aide de JSL ?Par exemple, étant donné une liste de texte, attribuez des valeurs en ajoutant la lettre "r" avant chaque élément et dans l'ordre dans lequel les éléments sont dans la liste.
nam = {"A","B","C","D","E","H"};Il en résulte les variables suivantes et leurs affectations :
rA=1;
rB=2;
rC=3;
rD=4;
rE=5;
rH=6;
Merci!
ScriptRe : Comment générer par lots des variables de mémoire affectées à partir de listes en utilisant JSL ?ce n'est pas du travail
nam = {"A", "B", "C", "D", "E", "H"};
For( i = 1, i <= N Items( nam ), i++,
"r" || nam[i] = i
);Re : Comment générer par lots des variables de mémoire affectées à partir de listes en utilisant JSL ?Une manière:
Names Default To Here(1);
nam = {"A", "B", "C", "D", "E", "H"};
For(i = 1, i <= N Items(nam), i++,
Eval(Parse("r" || nam[i] || "=" || Char(i) || ""))
);
Show(rA, rB, rC, rD, rE, rH);Mais il y a très peu de cas où je le ferais. J'utiliserais très probablement toujours des tableaux associatifs ou des listes pour gérer des situations comme celle-ci
nam = {"A", "B", "C", "D", "E", "H"};
vals = {1, 2, 3, 4, 5, 6};
Show(vals[Contains(nam, "D")]);aa = Associative Array({"A", "B", "C", "D", "E", "H"},{1, 2, 3, 4, 5, 6});
Show(aa);Re : Comment générer par lots des variables de mémoire affectées à partir de listes en utilisant JSL ?je ne connaissais pas Selon la portée jusqu'à maintenant, et @Wendy_Murphrey il pourrait utiliser une meilleure documentation, mais il vous permet d'accéder à un espace de noms un peu comme un tableau associatif.
nam = {"A", "B", "C", "D", "E", "H"};
For( i = 1, i <= N Items( nam ), i++,
As Scoped( Global, nam[i]) = i;
);
show(a,b,c,d,e,h);a = 1 ;
b = 2 ;
c = 3 ;
d = 4 ;
e = 5 ;
h = 6 ;
Même si la documentation ne le dit pas, il peut être à gauche de = et le 2ème paramètre peut être une chaîne.
Je suis d'accord, la plupart du temps, je préférerais un vrai tableau associatif à cette technique car votre code peut se briser de manière terrible si la {liste de noms de variables} comprend une vraie variable dans votre code que vous ne voulez pas écraser :
La liste contenant "nam" vient d'écraser la variable "nam" qui contenait la liste...
Re : Comment générer par lots des variables de mémoire affectées à partir de listes en utilisant JSL ?Une légère variation sur la construction de l'AA en utilisant une matrice pour les valeurs :
nam = {"A", "B", "C", "D", "E", "H"};
myvars = Associative Array( nam, 1 :: N Items( nam ) );
Show( myvars["A"], myvars["H"] );mesvars["A"] = 1 ;
mesvars["H"] = 6;