Scala self type und this.type in Sammlungen Problem

8

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!

    
tuxSlayer 08.02.2012, 17:39
quelle

2 Antworten

1

Am Ende habe ich mich mit dem in dieser Diskussion vorgeschlagenen Ссылка abgefunden:

%Vor%

i.e. Variante (C), aber mit explizitem Selbsttyp. Dies gibt die Möglichkeit, this in anderen Methoden zu verwenden (zB Methode find(path: String): Option[Node] ).

    
tuxSlayer 09.02.2012, 13:15
quelle
5

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 Ссылка

ansehen     
Jan van der Vorst 08.02.2012 19:58
quelle

Tags und Links