Verilen iki bağımsız özellikler:Oluşturma bağımsız özellikler
trait T1 {
def x = 42
}
trait T2 {
def x = 0
}
ben gibi bu iki özelliklerin bir sınıf karıştırmayı tanımlamak çalışırsanız:
error: overriding method x in trait T1 of type => Int;
method x in trait T2 of type => Int needs `override' modifier
class C extends T1 with T2
^
one error found
:
class C extends T1 with T2
Bir derleyici hatası alıyorum
Şimdi, T1 ve T2'nin bağımsız olarak geliştirildiğini, dolayısıyla herhangi bir şeyi geçersiz kılmadıklarından dolayı geçersiz kılmadıklarını varsayalım. O zaman nasıl tanımlanabilir? Bunu beğendi:
class C extends T1 with T2 {
override def x = super.x
}
?
Bu ilginç. Eğer 'x' in 'T1' ve 'T2' deki iki tanımı farklı tiplerde ise, kaçınılmaz bir problem gibi görünüyor. Scala'da türler eşleşmezse bu ad çakışmaları düzeltmek için akıllıca bir yol var mı? – Mike
İlk örneğimi kullanın ve sonra 'C' yi aşağıdaki gibi tanımlayın: C sınıfı T1'i T2 ile uzatır {override def x = super [T1] .x} '. Elbette, süper [T2] .x' diyebilirsiniz. –