Wie kann ich mit JSL zugewiesene Speichervariablen aus Listen stapelweise generieren?Weisen Sie beispielsweise bei einer Textliste Werte zu, indem Sie den Buchstaben "r" vor jedem Element und in der Reihenfolge hinzufügen, in der sich die Elemente in der Liste befinden.
nam = {"A","B","C","D","E","H"};Daraus ergeben sich folgende Variablen und deren Zuordnungen:
rA=1;
rB=2;
rC=3;
rD=4;
rE=5;
rH=6;
Vielen Dank!
SkriptingBetreff: Wie kann ich mit JSL zugewiesene Speichervariablen aus Listen stapelweise generieren?Es funktioniert nicht
nam = {"A", "B", "C", "D", "E", "H"};
For( i = 1, i <= N Items( nam ), i++,
"r" || nam[i] = i
);Betreff: Wie kann ich mit JSL zugewiesene Speichervariablen aus Listen stapelweise generieren?Einweg:
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);Aber es gibt sehr wenige Fälle, in denen ich das tun würde. Ich würde höchstwahrscheinlich immer assoziative Arrays oder Listen verwenden, um mit solchen Situationen umzugehen
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);Betreff: Wie kann ich mit JSL zugewiesene Speichervariablen aus Listen stapelweise generieren?Ich wusste es nicht Als Scoped bis jetzt, und @Wendy_Murphrey es könnte eine bessere Dokumentation gebrauchen, aber es ermöglicht Ihnen den Zugriff auf einen Namespace ein bisschen wie auf ein assoziatives Array.
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;
Auch wenn es in der Dokumentation nicht steht, kann es auf der linken Seite von = stehen und der 2. Parameter kann ein String sein.
Ich stimme zu, meistens würde ich ein echtes assoziatives Array dieser Technik vorziehen, da Ihr Code auf schreckliche Weise kaputt gehen kann, wenn die {Liste der Variablennamen} zufällig eine echte Variable in Ihrem Code enthält, die Sie nicht überschreiben möchten:
Die Liste mit "nam" hat gerade die Variable "nam" überlagert, die die Liste enthält ...
Betreff: Wie kann ich mit JSL zugewiesene Speichervariablen aus Listen stapelweise generieren?Eine leichte Variation beim Erstellen des AA mit einer Matrix für die Werte:
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;