1

我经常遇到以下我在 D2 源代码中不太掌握的结构:

alias uint SymbolRef;

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

alias entries this;鉴于已经存在,类型定义的内部意味着什么Symbol[] entries;

4

1 回答 1

4

官方文档

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

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

《 The D Programming Language 》的相关章节是《6.13 Multiple Subtyping

于 2012-08-17T18:47:59.210 回答