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 attribuées à partir de listes à l'aide de 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 ;
Re : Comment générer par lots des variables de mémoire attribuées à partir de listes à l'aide de JSL ?je n'étais pas au courant 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);un = 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 casser de manière terrible si la {liste des noms de variables} inclut une vraie variable dans votre code que vous ne voulez pas écraser :
The list holding "nam" just clobbered the variable 'nam' which held the list...The list holding "nam" just clobbered the variable 'nam' which held the list...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 attribuées à partir de listes à l'aide de 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 ferais cela. 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 attribuées à partir de listes à l'aide de 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
);