Ich versuche, abstrakte und explizite Selbsttypen in Scala zu verstehen. Betrachten wir dieses Beispiel: Ich möchte so einfach wie möglich eine Basis für einen erweiterbaren Baum erstellen:
%Vor% Ich möchte jedoch in der Lage sein, Baumknoten mit einigen Methoden zu erweitern und diese Methoden zu verwenden: tree.children foreach { _.newMethod() }
Dafür habe ich es versucht:
A. this.type: FAIL
%Vor%Arbeitsvariante ist ziemlich tollpatschig.
B. Abstrakte Typen: FAIL
%Vor%Funktioniert überhaupt nicht, weil der pathspezifische Typ nicht übereinstimmt, wie ich es verstanden habe.
C. Geben Sie params (generics) ein: OK
%Vor%Funktioniert OK, aber nicht so gut in abgeleiteten Klassen zu pflegen.
Irgendwelche Ideen, wie man die ersten beiden Varianten ohne eine Menge Code arbeiten lässt?
Auch bei diesem Typ habe ich Probleme mit der Implementierung bekommen.
%Vor%Danke!
Ohne wirklich zu verstehen, was das Problem mit (C) ist, könntest du eine Variante von (B) ausprobieren:
%Vor%Was Ihr pfadspezifisches Typproblem vermeidet. Übrigens sollten Sie sich wirklich Ссылка
ansehenTags und Links scala self-type abstract-type