要求解释惯用的D2构造

时间:2012-08-15 12:02:17

标签: d dmd

我经常遇到以下构造,我在D2源代码中没有完全掌握:

alias uint SymbolRef;

struct SymbolTable {
  alias entries this;
  SymbolRef startSymbol;
  Symbol[] entries;
}

如果alias entries this;已经存在,那么Symbol[] entries;在类型定义中意味着什么呢?

1 个答案:

答案 0 :(得分:4)

Official docs

简而言之:别名这个构造是D的多重实现继承方式。在您的示例中,structTable应该与Symbol []的行为类似,并添加了一些额外的东西。它可以隐式转换为Symbol []。

但是,我经常听说在当前的编译器实现中更复杂地使用 alias this 被认为是错误的,所以最好小心点,并准备好bug报告;)

" D编程语言的相关章节"是" 6.13多个子类型"