启用或禁用 const 数组中的元素
Enable or disable elements in const array
如何enable/disable将元素包含在常量数组中?
struct country {
const string name;
ulong pop;
};
static const country countries[] = [
{"Iceland", 800},
{"Australia", 309},
//... and so on
//#ifdef INCLUDE_GERMANY
version(include_germany){
{"Germany", 233254},
}
//#endif
{"USA", 3203}
];
在 C 中,您可以使用 #ifdef 来启用或禁用数组中的特定元素,
但你会如何在 D 中做到这一点?
有几种方法。一种方法是使用三元运算符有条件地附加数组:
static const country[] countries = [
country("Iceland", 800),
country("Australia", 309),
] ~ (include_germany ? [country("Germany", 233254)] : []) ~ [
country("USA", 3203)
];
您还可以编写一个函数来计算和 returns 数组,然后用它初始化一个 const
值。该函数将在编译时 (CTFE) 进行评估。
您可以使用自定义开关进行编译-version=include_germany
。在代码中您定义了一个静态布尔值:
static bool include_germany;
version(include_germany){include_germany = true;}
然后构建阵列与 CyberShadow 答案中描述的相同。
如何enable/disable将元素包含在常量数组中?
struct country {
const string name;
ulong pop;
};
static const country countries[] = [
{"Iceland", 800},
{"Australia", 309},
//... and so on
//#ifdef INCLUDE_GERMANY
version(include_germany){
{"Germany", 233254},
}
//#endif
{"USA", 3203}
];
在 C 中,您可以使用 #ifdef 来启用或禁用数组中的特定元素, 但你会如何在 D 中做到这一点?
有几种方法。一种方法是使用三元运算符有条件地附加数组:
static const country[] countries = [
country("Iceland", 800),
country("Australia", 309),
] ~ (include_germany ? [country("Germany", 233254)] : []) ~ [
country("USA", 3203)
];
您还可以编写一个函数来计算和 returns 数组,然后用它初始化一个 const
值。该函数将在编译时 (CTFE) 进行评估。
您可以使用自定义开关进行编译-version=include_germany
。在代码中您定义了一个静态布尔值:
static bool include_germany;
version(include_germany){include_germany = true;}
然后构建阵列与 CyberShadow 答案中描述的相同。