在运行时使用Dlang中的反射获取变量值

是否可以在运行时在dlang中获取类/结构/其他变量值以获取/设置其值?如果是,请提供示例。 也有可能获得运行时变量值吗?在运行时使用Dlang中的反射获取变量值

例:

class S{ int svariable = 5;} 

class B { int bvariable = 10;}

void printValue(T, T instanceVariable, string variableName) {

writeln("Value of ", variableName, "=", instanceVariable.variableName);

}

输出:

的svariable = 5的值;
bvariable的值= 10;

回答:

有一个名为witchcraft的库允许运行时反射。有一些如何在该页面上使用它的例子。

回答:

我首先建议尝试像@mitch_提到的反射库。但是,如果你想在没有外部库做,你可以使用getMember来获取和设置字段,以及调用功能:

struct S { 

int i;

int fun(int val) { return val * 2; }

}

unittest {

S s;

__traits(getMember, s, "i") = 5; // set a field

assert(__traits(getMember, s, "i") == 5); // get a field

assert(__traits(getMember, s, "fun")(12) == 24); // call a method

}

以上是 在运行时使用Dlang中的反射获取变量值 的全部内容, 来源链接: utcz.com/qa/259867.html

回到顶部