[疑难] 变量名称可以得到吗?
jinheking
2007-04-11
比如
int i,j; 通过某种方法我能够得到变量名称吗? 好像: writeflen(i.getvariableName); |
|
qiezi
2007-04-11
可以的,不过你要想办法提取出来,这里打印出来的是一个打乱过的名字:
import std.stdio; class Foo(alias a) { } template getname(alias a) { const char[] getname = (Foo!(a)).mangleof; } void main() { int iiiiiii = 1234567; writefln(getname!(iiiiiii)); } 把getname包到一个模块里,然后字符串格式就固定了,从指定位置(固定)提取一个长度(总长减最小长度)就可以了。 这是pyd里面的实现方式。 |
|
qiezi
2007-04-11
简单调用iiiiiii.stringof也可以
|
|
jinheking
2007-04-11
第二种方法正确
第一种方法有问题,你刻意试验一下 char[] str; Cmain39__T7getnameS24_D7getname4mainFZv3strAaZ35__T3FooS24_D7getname4mainFZv3strAaZ3Foo int ll; Cmain37__T7getnameS22_D7getname4mainFZv2lllZ33__T3FooS22_D7getname4mainFZv2lllZ3Foo 有重复 也许有办法,就是告诉了变量长度。 |
|
qiezi
2007-04-11
3str
2ll 这不就是长度么? |
|
jinheking
2007-04-11
我说的就是这个意思
|