如何使用 JSL 从列表中批量生成分配的内存变量?例如,给定一个文本列表,通过在每个元素之前添加字母“r”并按照元素在列表中的顺序来分配值。
nam = {"A","B","C","D","E","H"};这导致以下变量及其分配:
rA=1;
rB=2;
rC=3;
rD=4;
rE=5;
rH=6;
谢谢!
脚本编写回复:如何使用 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 } 碰巧在您的代码中包含一个您不想覆盖的真实变量,您的代码可能会以一种可怕的方式中断:
The list holding "nam" just clobbered the variable 'nam' which held the list...保存“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;