해당 특성의 형식 매개 변수의 형식 매개 변수에 특성에 액세스하고 싶습니다. 이 "2 차"유형 매개 변수를 특성에 대한 다른 "1 차"매개 변수로 추가하지 않아도됩니다. 다음은이 문제를 나타낸다 : [D [A]가 아니라 C는 [D [A1]을, 나타내는형식 매개 변수의 형식 매개 변수에 액세스
sealed trait A; sealed trait A1 extends A; sealed trait A2 extends A
trait B[ ASpecific <: A ] { type ASpec = ASpecific }
trait D[ ASpecific <: A ] extends B[ ASpecific ]
trait C[ +BSpecific <: B[ _ <: A ]] {
def unaryOp : C[ D[ BSpecific#ASpec ]]
}
def test(c: C[ B[ A1 ]]) : C[ D[ A1 ]] = c.unaryOp
테스트는 c.unaryOp는 타입 C의 결과가 분명히 때문에 컴파일 실패를 ASpec _ < : A의 지름길 일 뿐이며 특정 유형 매개 변수를 나타내지 않습니다.
두 형 파라미터 해결책은 간단하다 :
sealed trait A; sealed trait A1 extends A; sealed trait A2 extends A
trait B[ ASpecific <: A ]
trait D[ ASpecific <: A ] extends B[ ASpecific ]
trait C[ ASpecific <: A, +BSpecific <: B[ ASpecific ]] {
def unaryOp : C[ ASpecific, D[ ASpecific ]]
}
def test(c: C[ A1, B[ A1 ]]) : C[ A1, D[ A1 ]] = c.unaryOp
하지만 난 분명히 중복이 두 번째, 매개 변수를 사용하여 내 소스를 혼란해야하는 이유 이해가 안 돼요. 특성 B에서 그것을 검색 할 수있는 방법이 없을까요?
나는 더 나은 표정을 가지고 있습니다 ... – pedrofurla
지금까지 성공하지 못했습니다 ... :( – pedrofurla