Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我经常遇到以下我在 D2 源代码中不太掌握的结构:
alias uint SymbolRef; struct SymbolTable { alias entries this; SymbolRef startSymbol; Symbol[] entries; }
alias entries this;鉴于已经存在,类型定义的内部意味着什么Symbol[] entries;?
alias entries this;
Symbol[] entries;
官方文档
简而言之:别名这个构造是D的多重实现继承方式。在您的示例中,结构 SymbolTable 的行为应该与 Symbol[] 类似,只是增加了一些额外的东西。它可以隐式转换为 Symbol[]。
但是,我经常听说在当前编译器实现中,更复杂的别名使用被认为是错误的,所以最好在这里小心并准备好错误报告;)
《 The D Programming Language 》的相关章节是《6.13 Multiple Subtyping》