这两种方法计算出一个单体的导数,但是我不明白它们之间的区别是什么,它们是否做同样的事情?为什么一个要返回,另一个要更改调用对象?
哪一个更好?
通常,我应该如何返回对象?
public Monom Der()
{
double a = this.get_coef() * this.get_pow();
int b = this.get_pow() - 1;
return new Monom(a, b);
}
public void Der()
{
this.set_coefficient(this._power * this._coefficient);
this.set_power(this._power - 1);
}
最佳答案
这个
public Monom Der() {
double a = this.get_coef() * this.get_pow();
int b = this.get_pow() - 1;
return new Monom(a, b);
}
不会更改实例的状态,当您要具有不可变的对象时,此功能很有用。它可以用于处理初始状态和处理后状态的两种状态
Monom initialMonom = new Monom(2, 2);
Monom theNewMonom = initialMonom.Der();
// do something with both initialMonom and theNewMonom
这个
public void Der() {
this.set_coefficient(this._power * this._coefficient);
this.set_power(this._power - 1);
}
更改当前实例的状态,因此该实例不是不可变的。当需要重用实例时,它会很有用
Monom initialMonom = new Monom(2, 2);
// do something with initial monom
initialMonom.Der(); // mutate the initial monom
// do something with the new state