コンストラクターの宣言の違いは何ですか
this(...) { ... }
と
init(...) { ... }
Dのstruct
?
BitArray
でstd.bitmanip
しか使わないからかなinit()
。
コンストラクターの宣言の違いは何ですか
this(...) { ... }
と
init(...) { ... }
Dのstruct
?
BitArray
でstd.bitmanip
しか使わないからかなinit()
。
これは、D1 に構造体コンストラクターがなかったためです。std.bitmanip の BitArray は、D1 の std.bitarray モジュールhttp://www.digitalmars.com/d/1.0/phobos/std_bitarray.htmlのポートであるため、D1 スタイルで記述され、新しい言語機能を使用するために実際に更新されることはありません。 .
コントラスト D1 の構造体機能テーブル: http://www.digitalmars.com/d/1.0/struct.html
D2 の http://dlang.org/struct.htmlを使用
かなりの数の違いが見られるでしょう。D1 構造体は、本質的に、メソッド用の構文シュガーが少しある C 構造体でした。コンストラクターは不可能だったので、代わりに init メソッドを使用しました。(同様に、D1 にも構造体デストラクタがなかったため、RAII のような C++ スタイルの慣用句はほとんど機能しませんでした。代わりに、scope(exit) mystruct.destroy(); スタイル コードを使用する必要があります。)
ですから、それは単なる歴史的なものです。コンストラクターは、内部では、これらの init メソッドと同じように機能します。