JSLを使用してリストから割り当てられたメモリ変数をバッチ生成するにはどうすればよいですか?たとえば、テキストのリストが与えられた場合、各要素の前に要素がリストにある順序で文字「r」を追加して値を割り当てます。
nam = {"A","B","C","D","E","H"};これにより、次の変数とその割り当てが発生します。
rA=1;
rB=2;
rC=3;
rD=4;
rE=5;
rH=6;
ありがとう!
スクリプティングRe:JSLを使用してリストから割り当てられたメモリ変数をバッチ生成する方法は?それは動作しません
nam = {"A", "B", "C", "D", "E", "H"};
For( i = 1, i <= N Items( nam ), i++,
"r" || nam[i] = i
);Re:JSLを使用してリストから割り当てられたメモリ変数をバッチ生成する方法は?一方通行:
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);しかし、私がこれを行うケースはほとんどありません。 私はおそらく常に連想配列またはリストを使用してこのような状況を処理します
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:JSLを使用してリストから割り当てられたメモリ変数をバッチ生成する方法は?知らなかったスコープとして今まで、そして@Wendy_Murphreyより良いドキュメントを使用することもできますが、連想配列のように名前空間にアクセスできます。
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;
ドキュメントには記載されていませんが、=の左側にあり、2番目のパラメーターは文字列にすることができます。
{変数名のリスト}に上書きしたくない実際の変数がコードに含まれていると、コードがひどく壊れてしまう可能性があるため、ほとんどの場合、この手法よりも実際の連想配列を使用することをお勧めします。
「nam」を保持しているリストは、リストを保持している変数「nam」を壊してしまいました。
Re:JSLを使用してリストから割り当てられたメモリ変数をバッチ生成する方法は?値のマトリックスを使用してAAを構築する際のわずかなバリエーション:
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;