首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CTFE生成一组结构别名

使用CTFE生成一组结构别名
EN

Stack Overflow用户
提问于 2013-08-31 20:21:24
回答 1查看 112关注 0票数 2

说我有课

代码语言:javascript
复制
struct Vector (ElementType, uint Dimension) { ... }

表示一个固定维向量以及这些短数。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-31 21:32:09

你总是可以像混音一样来做。

代码语言:javascript
复制
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())来查看它生成的代码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18552454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档