Mam klasę abstrakcyjną z domyślną wartością dla jej parametru. Nie chcę ponownie używać wartości domyślnej w konstruktorze wszystkich możliwych implementacji.Domyślny parametr dziedziczenia Scala w klasie nadrzędnej
abstract class Place(val place: String = "World")
class Message(val message: String = "Hello", p: String) extends Place(p) {
override def toString = s"$message $place"
}
Co chcę uzyskać
new Message("Hi", "Universe") = "Hi Universe" // Ok
new Message("Hi") = "Hi World" // Doesn't work, second parameter is required
new Message() = "Hello World" // Doesn't work, second parameter is required
uznałem za pomocą pomocniczego konstruktora z pominięciem drugiego parametru, ale to nie pomaga, ponieważ nie można nazwać Super konstruktorów poza głównym konstruktorem.
Chcę wiedzieć, jak to zrobić, lub dlaczego nie jest to możliwe. Nie szukam obejścia, jak nie używanie dziedziczenia.
prace. nie w postaci zamkniętej. Tutaj masz 3 obiekty do żonglowania (obiekt, streszczenie i klasa). W szczególności nie udziela się zaliczenia przedmiotu i abstraktów o tej samej nazwie. klasa Wiadomość musi wiedzieć o obiekcie Miejsce, więc użycie tego wymaga więcej okablowania, jeśli to ma jakiś sens. abstrakcja i beton powinny poradzić sobie z tym wszystkim. – Drew