如何使用 JSL 從列表中批量生成分配的內存變量?例如,給定一個文本列表,通過在每個元素之前添加字母“r”並按照元素在列表中的順序來分配值。
nam = {"A","B","C","D","E","H"};這導致以下變量及其分配:
rA=1;
rB=2;
rC=3;
rD=4;
rE=5;
rH=6;
謝謝!
腳本編寫回复:如何使用 JSL 從列表中批量生成分配的內存變量?這不工作
nam = {"A", "B", "C", "D", "E", "H"};
For( i = 1, i <= N Items( nam ), i++,
"r" || nam[i] = i
);回复:如何使用 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);回复:如何使用 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);一 = 1;
b = 2;
c = 3;
d = 4;
e = 5;
h = 6;
即使文檔沒有說明,它也可以在 = 的左側,並且第二個參數可以是字符串。
我同意,大多數時候我更喜歡真正的關聯數組而不是這種技術,因為如果 { list of variable names } 碰巧在您的代碼中包含一個您不想覆蓋的真實變量,您的代碼可能會以一種可怕的方式中斷:
保存“nam”的列表剛剛破壞了保存列表的變量“nam”......
回复:如何使用 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;