我经常遇到以下构造,我在D2源代码中没有完全掌握:
alias uint SymbolRef;
struct SymbolTable {
alias entries this;
SymbolRef startSymbol;
Symbol[] entries;
}
如果alias entries this;
已经存在,那么Symbol[] entries;
在类型定义中意味着什么呢?
答案 0 :(得分:4)
简而言之:别名这个构造是D的多重实现继承方式。在您的示例中,structTable应该与Symbol []的行为类似,并添加了一些额外的东西。它可以隐式转换为Symbol []。
但是,我经常听说在当前的编译器实现中更复杂地使用 alias this 被认为是错误的,所以最好小心点,并准备好bug报告;)
" D编程语言的相关章节"是" 6.13多个子类型"