1

D2 ソース コードでよく理解できない次の構造に遭遇することがよくあります。

alias uint SymbolRef;

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

alias entries this;がすでに存在することを考えると、型定義の内部は何を意味しSymbol[] entries;ますか?

4

1 に答える 1

4

公式ドキュメント

要するに: alias この構文は、複数の実装を継承する D の方法です。あなたの例では、構造体 SymbolTable は Symbol[] と同様に動作し、いくつかの追加要素が追加されています。Symbol[] に暗黙的に変換できます。

ただし、より複雑なエイリアスの使用法は、現在のコンパイラの実装ではバグがあると見なされているとよく耳にします。そのため、ここでは注意して、バグレポートに備えてください ;)

「 The D Programming Language 」の関連する章は「6.13 Multiple Subtyping」です。

于 2012-08-17T18:47:59.210 に答える