说我有课
struct Vector (ElementType, uint Dimension) { ... }表示一个固定维向量以及这些短数。
alias Vector!(float, 2) vec2;
alias Vector!(float, 3) vec3;
alias Vector!(float, 4) vec4;
alias Vector!(double, 2) vec2d;
alias Vector!(double, 3) vec3d;
alias Vector!(double, 4) vec4d;
alias Vector!(int, 2) vec2i;
alias Vector!(int, 3) vec3i;
alias Vector!(int, 4) vec4i;我能用D的特性在编译时生成这些别名吗?
还是仅仅是为了评估功能?
/Per
发布于 2013-08-31 21:32:09
你总是可以像混音一样来做。
string makeAliases() {
string code;
import std.conv;
foreach(type; ["float", "double", "int"])
foreach(n; 2 .. 5)
code ~= "alias Vector!("~type~", " ~ to!string(n) ~ ") vec" ~ to!string(n) ~ type[0] ~ ";\n";
return code;
}
mixin(makeAliases());通常,如果您创建一个编译时可评估函数来构建一串代码,那么您就可以混合(thatFunction(args.)),并在某个时候实现它。
在调试函数时,您可以只在运行时运行它并写入它(thatFunction())来查看它生成的代码。
https://stackoverflow.com/questions/18552454
复制相似问题