2014-01-17 2 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) 
} 

다른 방법이 있습니다하지만이 일이 당신이 원하는 것을 표현에 매우 잘 작동 찾을 수 있습니다.

관련 문제