2014-01-17 103 views
5

我很新的斯卡拉。我試圖編寫一個抽象類,其方法將被要求在子類上實現。我想使用泛型來強制該方法接受當前類的參數。斯卡拉通用:需要方法來使用類的類型

abstract class MySuper{ 
    def doSomething:(MyInput[thisclass]=>MyResult) 
} 
class MySub extends MySuper{ 
    override def doSomething:(MyInput[MySub]=>MyResult) 
} 

我知道上面thisclass是無效的,但我覺得它種表達我想說的話。基本上我想參考實施類。 這將是什麼有效的方法呢?

+0

你的意思是「這個類」或「這個對象」? – pedrofurla

回答

4

你可以用一個整潔的小把戲做到這一點:

trait MySuper[A <: MySuper[A]]{ 
    def doSomething(that: A) 
} 

class Limited extends MySuper[Limited]{ 
    def doSomething(that: Limited) 
} 

還有其它的方法,但是我覺得這是一個工作相當不錯,在表達你想要什麼。