原创作者: oldrev
阅读:1044次
评论:0条
更新时间:2011-05-26
D的文档里说 struct/class 的 .tupleof 属性可以把一个 struct 的所有成员变量转换为一个 tuple。那么反过来让 tuple 作为 struct 的成员可不可以呢?答案是可以,因为 tuple相当一个可以存放不同元素类型的静态数组,我们只要在 struct 中声明一个 Tuple 实例就能达到目的:
这样就相当于手写:
当访问 bar 中的元素时,只需:
值得注意的是由于 Tuple 是一个整体,因此在 union 中声明 Tuple 实例是不能起到 “union” 的效果的。
D 代码
- struct Foo(Tuple...)
- {
- Tuple fields;
- }
- alias Foo!(int, long, char) Foobar;
- Foobar bar;
这样就相当于手写:
D 代码
- struct Foobar
- {
- int field0;
- long field1;
- char field2;
- }
当访问 bar 中的元素时,只需:
D 代码
- bar.fields[0] = 1; // Tuple 第一个元素是 int 类型
- bar.fields[2] = 'A';
- ...
值得注意的是由于 Tuple 是一个整体,因此在 union 中声明 Tuple 实例是不能起到 “union” 的效果的。
评论 共 0 条 请登录后发表评论