2016-10-12 3 views
0

아래 패턴에 따라 스칼라 코드가 있습니다.스칼라에서 매개 변수화 및 상속 유형

class T 

class A1[S <: T](private val arg1: String, private val arg2: S) 
class A2[S <: T](private val arg1: String, private val arg2: S) 
    extends A1[S] 
class A3[S <: T](private val arg1: String, private val arg2: S) 
    extends A2[S] 

나는 많은 반복이 여기에 있기 때문에 위의 코드를 단축 할 수있는 방법이 있다는 것을 희망하고있다. A1의 서브 클래스는 내재적으로 타입 매개 변수화 [S <: T]과 생성자 (private val arg1: String, private val arg2: S)을 갖고 싶습니다. 이를 수행 할 수있는 방법이 있습니까? 아니면 정의한 모든 하위 클래스에 대해이 텍스트를 반복해야합니까?

답변

0

A1, A2A3을 하나의 AImpl으로 바꿀 수 있습니까?

sealed trait Condition 
case object One extends Condition 
case object Two extends Condition 
case object Three extends Condition 

sealed trait AParent[A] 
case class AImpl[A, B <: A](private val arg1: String, 
          private val arg2: B, 
          c: Condition) extends AParent[A] 
+0

불행히도 없습니다. 'Ai'는'A ​​(i-1)'의 하위 클래스입니다. –

+0

'argarent'를'AParent'의 하위 유형으로 지정하지 않은 내 대답을 편집했습니다. 이 새로운 대답이 아직도 필요한 것에 충분하지 않습니까? –

+0

안녕하세요 @AlexGrounds - 내 수정 답변 중 하나를 귀하의 요구를 충족하지 못했습니다? –

관련 문제