İşte sahip olduğum sınıfların basitleştirilmesi:Scala'da, bir liste içeren somut bir alanı geçersiz kılabilir ve alt sınıfa bir şey ekleyebilir miyim?
trait RequiredThings {
val requiredThings: Seq[String]
}
class SimpleCalculator with RequiredThings {
val requiredThings = List("a", "b")
}
class ComplicatedCalculator extends SimpleCalculator with RequiredThings {
self: SimpleCalculator =>
override val requiredThings:List[String] = List("c") ::: self.requiredThings
}
Bu versiyonda, benlik tipli bir açıklama kullanıyorum, ama tamamen olumlu değilim. Muhtemelen requiredThings
'i bir yönteme çevirerek çalışmayı başarabileceğimi düşünüyorum, ama bunu bir alan olarak denemek isterim.
Son çözüm:
trait RequiredThings {
def requiredThings: Seq[String]
}
class SimpleCalculator with RequiredThings {
def requiredThings = List("a", "b")
}
class ComplicatedCalculator extends SimpleCalculator with RequiredThings {
override def requiredThings:List[String] = List("c") ::: super.requiredThings
}
Yaptığım şey bu. Soruyu kodumun son sürümü ile güncelledim. –
"Bu biraz değişecek" biraz. " Kimsenin bu durumun değişeceğini söylediği posta listesinden hatırlamıyorum. Bana bu bilgiyi nereden aldığını gösterebilir misin? Teşekkürler. – Eric
@Eric: Bu e-posta listesinde hiç yayınlanmış olup olmadığından emin değilim, ancak Scala takımındayım ve Martin böyle bir özelliği tamamladı. Bu arada başka şeylerle uğraştım ve önemsiz olmayan bazı uygulama sorunları var. –