声明构造函数
之间有什么区别this(...) { ... }
和
init(...) { ... }
代表D struct
?
我不知道因为BitArray
中的std.bitmanip
仅使用init()
。
答案 0 :(得分:4)
这是因为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方法的工作方式相同。