声明构造函数有什么区别
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的struct特征表: http ://www.digitalmars.com/d/1.0/struct.html
使用 D2 的 http://dlang.org/struct.html
你会看到相当多的差异——D1 结构本质上是一个 C 结构,带有一点方法的语法糖。由于构造函数是不可能的,因此您使用了 init 方法。(同样,D1 也没有 struct 析构函数,这使得像 RAII 这样的 C++ 风格的惯用语几乎不可行——你必须使用 scope(exit) mystruct.destroy(); 风格的代码。)
所以这只是一个历史事件。构造函数在底层的工作方式与这些 init 方法相同。