Come generare in batch le variabili di memoria assegnate dagli elenchi utilizzando JSL?Ad esempio, dato un elenco di testo, assegnare valori aggiungendo la lettera "r" prima di ogni elemento e nell'ordine in cui gli elementi sono nell'elenco.
nam = {"A","B","C","D","E","H"};Ciò si traduce nelle seguenti variabili e nelle loro assegnazioni:
rA=1;
rB=2;
rC=3;
rD=4;
rE=5;
rH=6;
Grazie!
ScriptingRi: Come generare in batch le variabili di memoria assegnate dagli elenchi utilizzando JSL?Non è lavoro
nam = {"A", "B", "C", "D", "E", "H"};
For( i = 1, i <= N Items( nam ), i++,
"r" || nam[i] = i
);Ri: Come generare in batch le variabili di memoria assegnate dagli elenchi utilizzando JSL?Senso unico:
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);Ma ci sono pochissimi casi in cui lo farei. Molto probabilmente userei sempre array o elenchi associativi per gestire situazioni come questa
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);Ri: Come generare in batch le variabili di memoria assegnate dagli elenchi utilizzando JSL?non lo sapevo Come ambito fino ad ora, e @Wendy_Murphrey potrebbe usare una documentazione migliore, ma ti consente di accedere a uno spazio dei nomi un po' come un array associativo.
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;
Anche se la documentazione non lo dice, può essere sul lato sinistro di = e il secondo parametro può essere una stringa.
Sono d'accordo, la maggior parte delle volte preferirei un vero array associativo su questa tecnica perché il tuo codice può rompersi in modo terribile se l'{elenco dei nomi delle variabili} include una variabile reale nel tuo codice che non vuoi sovrascrivere:
The list holding "nam" just clobbered the variable 'nam' which held the list...L'elenco contenente "nam" ha appena superato la variabile "nam" che conteneva l'elenco ...
Ri: Come generare in batch le variabili di memoria assegnate dagli elenchi utilizzando JSL?Una leggera variazione sulla costruzione dell'AA utilizzando una matrice per i valori:
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;