¿Cómo generar por lotes variables de memoria asignadas a partir de listas usando JSL?Por ejemplo, dada una lista de texto, asigne valores agregando la letra "r" antes de cada elemento y en el orden en que los elementos están en la lista.
nam = {"A","B","C","D","E","H"};Esto da como resultado las siguientes variables y sus asignaciones:
rA=1;
rB=2;
rC=3;
rD=4;
rE=5;
rH=6;
¡Gracias!
ScriptingRe: ¿Cómo generar por lotes variables de memoria asignadas a partir de listas usando JSL?No es trabajo
nam = {"A", "B", "C", "D", "E", "H"};
For( i = 1, i <= N Items( nam ), i++,
"r" || nam[i] = i
);Re: ¿Cómo generar por lotes variables de memoria asignadas a partir de listas usando JSL?De una sola mano:
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);Pero hay muy pocos casos en los que haría esto. Lo más probable es que siempre use matrices asociativas o listas para manejar situaciones como esta
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: ¿Cómo generar por lotes variables de memoria asignadas a partir de listas usando JSL?Yo no sabia de Según el alcance hasta ahora, y @Wendy_Murphrey podría usar una mejor documentación, pero le permite acceder a un espacio de nombres un poco como una matriz asociativa.
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;
Aunque la documentación no lo dice, puede estar en el lado izquierdo de = y el segundo parámetro puede ser una cadena.
Estoy de acuerdo, la mayoría de las veces preferiría una matriz asociativa real sobre esta técnica porque su código puede romperse de una manera terrible si la {lista de nombres de variables} incluye una variable real en su código que no desea que se sobrescriba:
La lista que contenía "nam" simplemente golpeó a la variable 'nam' que contenía la lista ...
Re: ¿Cómo generar por lotes variables de memoria asignadas a partir de listas usando JSL?Una ligera variación en la construcción del AA usando una matriz para los valores:
nam = {"A", "B", "C", "D", "E", "H"};
myvars = Associative Array( nam, 1 :: N Items( nam ) );
Show( myvars["A"], myvars["H"] );myvars ["A"] = 1;
myvars ["H"] = 6;