Aşağıdaki örnek, aşırı yöntem \ operatör Kitabın Scala Programlama 'dan. Bir sınıf Verilen 'Akılcı' ve aşağıdaki yöntem tanımı:Scala:
def add(that: Rational): Rational =
new Rational(
this.numer * that.denom + that.numer * this.denom,
this.denom * that.denom
)
Ben başarıyla Int argüman alır kolaylık sürümüyle eklenti yöntemini aşırı yüklenmesine neden olabilecek ve yukarıdaki tanım kullanır:
def add(that: Int): Rational =
add(new Rational(that, 1))
Şimdiye kadar sorun yok.
Şimdi, bir operatör tarzı ismine yöntem adını değiştirirseniz: şöyle
def +(that: Rational): Rational =
new Rational(
this.numer * that.denom + that.numer * this.denom,
this.denom * that.denom
)
Ve aşırı yük:
(fragment of Rational.scala):19: error: value unary_+ is not a member of this.Rational
+(new Rational(that, 1))
^
:
def +(that: Int): Rational =
+(new Rational(that, 1))
aşağıdaki derleme hatası alıyorum
Derleyici neden +
yönteminin tekil bir sürümünü arıyor? Scala