【问题标题】:Methods that work for both mutable and immutable objects in D适用于 D 中可变和不可变对象的方法
【发布时间】:2014-10-12 17:55:49
【问题描述】:

我正在尝试为 D 中的一个类编写一个访问方法,我希望它同时适用于可变和不可变实例。

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

除非我使这两个版本(几乎)做完全相同的事情,否则我会不断收到编译器错误。

既然我没有改变任何状态,有没有办法使用一个单一的方法来操作可变和不可变的实例?

【问题讨论】:

    标签: immutability d


    【解决方案1】:

    为此,D 有inout

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

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

    更多信息请参见the documentation for inout functions

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多