1
내 특성 Outer
에는 두 개의 추상 멤버 유형 Inner1
및 Inner2
이 있어야합니다. Inner2
에 추상 회원 유형 Inner1
(을)를 갖고 싶습니다. Outer#Inner1
이 Inner2#Inner1
과 같아야한다는 요구 사항을 지정하고 싶습니다. 이것을하는 가장 설득력있는 방법은 무엇입니까? 지금까지 내가 가지고있다추상 멤버 유형의 평등에 대한 요구 사항은 무엇입니까?
trait HaveInner1 {
type Inner1
}
trait Outer {
type Inner1
type Inner2 <: HaveInner1
// require Inner1 == Inner2#Inner1;
def ?[T](implicit v: T): T = v
implicit var ev: Inner2#Inner1 =:= Inner1 = ?[Inner2#Inner1 =:= Inner1]
}
마지막 두 문장은 그다지 아름답 지 않다. 같은 일에 더 관용적 인 방법이 있습니까?
감사합니다. 'Inner2 <: HaveInner1 {type Inner1 = Outer.this.Inner1}'을 사용하면'outer'는 필요하지 않습니다. –
Google에 대한 몇 가지 조건을 말씀해주십시오. 스칼라에서 {type Inner1 = outer.Inner1}과 같은 표현을 어떻게 호출 할 수 있습니까? 내가 찾은 것 중 가장 가까운 것은 실존 유형이지만, 여기에 'forSome'을 추가 할 수없는 것 같습니다. –
아마도 유형 정교?! –