我有一些有用的代码,我不知道为什么。我将一个类实例化为一个不可变的变量。类中没有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)
{
...
}
}
答案 0 :(得分:2)
我在D网站上唯一能找到的就是在功能模板中推断出纯度。我是否应该假设我的类是参数化(或类模板),编译器推断所有方法的纯度,包括构造函数?
是。由于类是模板,因此所有方法都是模板(考虑到它们必须是隐藏的this
参数的类型来自模板)。因此,他们的身体必须在源头可用。推断属性的两个要求是可用的主体源和它们的模板参数(并且函数也不能尝试调用或检查自身,但是你也不要这样做)因此它可以推断为纯粹的。