如何在编译时设置此PREFIX值?更好的是使用数组/元组并附加到PREFIX。
class CarbNamespace {
//This is the variable I'd like to set
enum/Tuple PREFIX;
void initPrefix(string _PR)(){
//I would like to set the variable PREFIX variable to _PR(or some string modification)
PREFIX = _PR; ??
}
}
答案 0 :(得分:3)
你的问题和细节并不在我脑海中。
“如何在D中编译时设置类变量?”
你做不到。正如Adam从Kyle的回答中指出的那样,你可以在编译时创建一个对象,这实际上会在编译时设置变量;我怀疑这是你的兴趣。
//这是我想设置的变量
enum / Tuple PREFIX;“
好吧,如果它是枚举(不是类型),那么在编译时设置它当然可以完成
class CarbNamespace {
//This is the variable I'd like to set
enum PREFIX = giveMeValue();
}
auto giveMeValue() {
return "text";
}
但这不是一个类变量,它只是一个带有类命名空间的枚举常量,可能是你想要的。
在运行时加载模块之前,类不存在。这意味着您需要在模块加载时设置变量,这是通过模块构造函数(静态)来完成的。
static this() {
CarbNamespace.PREFIX = giveMeValue();
}
class CarbNamespace {
//This is the variable I'd like to set
static string PREFIX;
}
string giveMeValue() {
return "text";
}
答案 1 :(得分:1)
我不完全确定我是否理解你的问题,但试试这个:
class CarbNamespace
{
static string[] PREFIX = ["test1_", "test2_"];
void appendToPrefix(string _PR)
{
PREFIX ~= _PR;
}
}
void main()
{
import std.stdio : writeln;
CarbNamespace ns = new CarbNamespace();
writeln(ns.PREFIX);
ns.appendToPrefix("test3_");
writeln(ns.PREFIX);
}