d立即调用的串字面
可用立即调用的串字面来解决:
enum string values = () {
string result = "value.x";
if (L != 1) { result ~= ",value.y"; }
if (L != 2) { result ~= ",value.z"; }
if (L != 3) { result ~= ",value.w"; }
return result;
}(); // 调用刚定义函数.
enum string kind = () {
if (is(S == uint)) { return "ui"; }
else if(is(S==float)){return"f";}
else{assert(is(S==double));return"d";}
}();
因为枚常量是不变的.它们的值必须在单个表达式中计算,且一旦分配,就永远不变.
(){表达式;}(),神奇的表达式语法.
浙公网安备 33010602011771号