1

我正在创建一个显示大量变量的函数,其格式为变量 + 变量名。

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
4

2 回答 2

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}。给定值,无法知道该值是否恰好存储在变量中。这里的值同时存储在ab中。

不过我们也可以看看out({1,1,1,1}+{0,2,3,4})

系统将评估{1,1,1,1}+{0,2,3,4}并获得{1,2,3,4}. 然后out被调用。该值out收到了表达式的结果,但等价的值恰好存储在aand中b。这意味着这些值没有名称。

一般来说:变量有一个名字和一个值。值没有名称。

如果您需要打印名称,请查看字符串。

于 2016-05-20T11:58:31.190 回答
0

这将是内存密集型的,但您可以保留一个变量名称字符串,并将每个名称用一些字符分隔,并根据您想要获取的列表中变量的索引获取一个子字符串。例如,假设您想访问索引零,那么您从(变量的索引 * 变量名的长度,变量的索引 * 长度 + 长度 + 1)开始获取一个子字符串。字符串将是这样的:假设您有变量 foo、bas、random、impetus 字符串将像这样存储:“foo bas random impetus”

于 2017-04-18T21:55:30.840 回答