适用于D中的可变对象和不可变对象的方法

时间:2014-10-12 17:55:49

标签: immutability d

我正在尝试为D中的类编写一个访问方法,我想为可变实例和不可变实例工作。

public immutable(double[]) getInputs(uint i)immutable{
  return this.data[i];
}
public double[] getInputs(uint i){
  return this.data[i];
}

我不断收到编译器错误,除非我将这两个版本(差不多)完全相同。

由于我没有改变任何状态,有没有办法使用在可变和不可变实例上运行的单个方法?

1 个答案:

答案 0 :(得分:4)

D为此inout

public inout(double[]) getInputs(uint i) inout
{
    return this.data[i];
}

当对象(this)为constimmutable或两者都不可变(可变)时,这将有效。返回值的常量将与this相同。

有关详细信息,请参阅the documentation for inout functions