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
构造器,但也不能放进单独
模块中,因为打算把它插件
到类
中.