原创作者: oldrev   阅读:1015次   评论:0条   更新时间:2011-05-26    
D的文档里说 struct/class 的 .tupleof 属性可以把一个 struct 的所有成员变量转换为一个 tuple。那么反过来让 tuple 作为 struct 的成员可不可以呢?答案是可以,因为 tuple相当一个可以存放不同元素类型的静态数组,我们只要在 struct 中声明一个 Tuple 实例就能达到目的:
D 代码
 
  1. struct Foo(Tuple...)  
  2. {  
  3.     Tuple fields;  
  4. }  
  5. alias Foo!(intlongchar) Foobar;  
  6. Foobar bar;  

这样就相当于手写:
D 代码
 
  1. struct Foobar  
  2. {  
  3.     int field0;  
  4.     long field1;  
  5.     char field2;  
  6. }  

当访问 bar 中的元素时,只需:
D 代码
 
  1. bar.fields[0] = 1; // Tuple 第一个元素是 int 类型  
  2. bar.fields[2] = 'A';  
  3. ...  


值得注意的是由于 Tuple 是一个整体,因此在 union 中声明 Tuple 实例是不能起到 “union” 的效果的。
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

  • qiezi在2007-03-16创建
  • qiezi在2011-05-26更新
Global site tag (gtag.js) - Google Analytics