我有一些有用的代码,但我不知道为什么。我将类实例化为一个不可变变量。类中没有immutable构造函数,也没有标记为pure的构造函数,但无论如何它都能工作。
我还读到,pure构造函数可以用于可变、不可变、const和共享实例。
我在D网站上唯一能找到的就是在函数模板中推断出纯度。我是否应该假设,由于我的类是参数化的(或一个类模板),编译器是在推断所有方法的纯度,包括构造函数?
代码如下:
public class Data(size_t numInputs, size_t numTargets)
{
...
public this(in double[][] data, in bool[] filter, in bool doNorm = true)
{
...
}
}发布于 2015-06-16 01:41:45
我在D网站上唯一能找到的就是在函数模板中推断出纯度。我是否应该假设,由于我的类是参数化的(或一个类模板),编译器是在推断所有方法的纯度,包括构造函数?
是。因为类是模板,所以所有方法都是模板(考虑到它们必须是模板,因为隐藏的this参数的类型来自于模板)。因此,它们的身体必须在来源中可用。推断属性的两个要求是可用的主体源和它们的模板参数(而且函数不能试图调用或检查自身,但也不能这样做),因此可以推断为纯属性。
https://stackoverflow.com/questions/30856941
复制相似问题