我正在创建一个以变量+变量名称格式显示大量变量的函数。
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
答案 0 :(得分:1)
给定列表值,无法找到其名称。
考虑这个例子:
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
和b
中。这意味着这些值没有名称。
一般来说:变量有名称和值。价值观没有名字。
如果您需要打印名称,请查看字符串。
答案 1 :(得分:0)
这将占用大量内存,但您可以保留一串变量名称,并将每个名称分隔一定数量的字符,并根据您要获取的列表中的变量索引获取子字符串。例如,假设你想要访问索引零,那么你从一个子字符串开始(变量的索引*变量名的长度,indexofvariable * length + length + 1)。 字符串将是这样的:说你有变量foo,bas,random,impetus 字符串将如下存储:“foo bas random impetus”