我正在创建一个显示大量变量的函数,其格式为变量 + 变量名。
Define LibPub out(list)=
Func
Local X
for x,1,dim(list)
list[x]->name // How can I get the variable name here?
Disp name+list[x]
EndFor
Return 1
EndFunc
给定一个列表值,无法找到它的名称。
考虑这个例子:
a:={1,2,3,4}
b:=a ; this stores {1,2,3,4} in b
out(b)
第 1 行:首先{1,2,3,4}
创建值。然后创建一个具有名称的变量,a
并将其值设置为{1,2,3,4}
。
第 2 行:计算表达式a
;结果是{1,2,3,4}
。创建一个具有名称的新变量,b
并将其值设置为`{1,2,3,4}。
第 3 行:计算表达式b
。变量引用查找存储在 中的值b
。结果是{1,2,3,4}
。然后将该值传递给函数out
。
该函数out
接收值{1,2,3,4}
。给定值,无法知道该值是否恰好存储在变量中。这里的值同时存储在a
和b
中。
不过我们也可以看看out({1,1,1,1}+{0,2,3,4})
。
系统将评估{1,1,1,1}+{0,2,3,4}
并获得{1,2,3,4}
. 然后out
被调用。该值out
收到了表达式的结果,但等价的值恰好存储在a
and中b
。这意味着这些值没有名称。
一般来说:变量有一个名字和一个值。值没有名称。
如果您需要打印名称,请查看字符串。
这将是内存密集型的,但您可以保留一个变量名称字符串,并将每个名称用一些字符分隔,并根据您想要获取的列表中变量的索引获取一个子字符串。例如,假设您想访问索引零,那么您从(变量的索引 * 变量名的长度,变量的索引 * 长度 + 长度 + 1)开始获取一个子字符串。字符串将是这样的:假设您有变量 foo、bas、random、impetus 字符串将像这样存储:“foo bas random impetus”