2308d的静态构造函数循环依赖示例

原文

//Steve:
__gshared string[string] dict;
shared static this() {
    dict = ["a" : "b"];
}

这里有两个论点:这不能是CRT构造器,因为它依赖于D运行时,并且认为它应该进入自己的模块是一个QoL问题,当你想要私有到类而不是私有到模块时,可为提供它,因为语言按期望工作,而这里不是.

亚当的示例:

__gshared Object function()[string] factories;
Object build(string s) {
     return factories[s]();
}
mixin template Register() {
     shared static this() {
         factories[typeof(this).mangleof] = () {
             return new typeof(this);
         };
     }
}

因为依赖D运行时,不能是CRT构造器,但也不能放进单独模块中,因为打算把它插件中.

你可能感兴趣的:(dlang,d,d)