2017-02-04 22 views
0

ich so etwas wie diesesAufschalten eine abstrakte Methode, während das Verfahren unter Verwendung von

abstract class Foo { 

    def bar:String 
    def modifiedFoo:Foo = new Foo(){ 
     override def bar = super.bar+"\n" 
    } 
} 

tun wollen, aber das ist nicht legitim ("Methode bar in der Klasse Foo von Super zugegriffen, es nicht, wenn es abstrakt sein kann wird von einem Member überschrieben, das als Abstract deklariert wurde und überschreibt "welches inturn nur für Traits zulässig ist".

Ich konnte die Methode modifiedFoo in das Begleitobjekt mit Unterschrift modifiedFoo (foo: Foo) bewegen, aber das ist weniger elegant. Wie gehen Sie mit diesem Problem um?

Antwort

2

Ich glaube, Sie nur self auf folgende Weise verwenden:

abstract class Foo { 

    self: Foo => 

    def bar: String 

    def modifiedFoo: Foo = new Foo() { 
    override def bar = self.bar + "\n" 
    } 

} 
+0

Dank, das hilft – gcc

Verwandte Themen