2
서로에 대한 참조를 보유 할 두 개의 추상 클래스가 있습니다. 형식 멤버를 바인딩하는 방법은 파생 된 16 진수 클래스의 SideT 멤버의 HexT 유형이 항상 파생 된 Hex 클래스? 파생 클래스 HexA의 경우 HexA # SideT # HexT = HexA스칼라 추상 형식 경계 상호 참조
마찬가지로 파생 된 모든 Side 클래스의 HexT 멤버의 SideT 유형은 파생 Side Class가됩니다. SideB # HexT # SideT = SideB
Eclipse 3.7.2에서 Eclipse 2.1.0.M1 용 스칼라를 사용하고 있습니다. 모든 클래스는 별도의 파일에 있습니다. 다음은 OK 컴파일하지만, 내가 원하는 보장하지 않습니다
abstract class Hex { type SideT <: Side {type HexT <= Hex } }
abstract class Side { type HexT <: Hex {type SideT <= side } }
class HexC() extends Hex() { type SideT = SideC }
class SideC extends Side { type HexT = HexC }
그러나 다음은 파생 구현에 컴파일되지 않습니다 :
abstract class Hex{type SideT <: Side {type HexT = this.type}}
abstract class Side{type HexT <: Hex {type SideT = this.type}}
class HexC() extends Hex(){
type SideT = SideC //This won't compile
}
class SideC extends Side {
type HexT = HexC //this won't compile
}
이 맞습니까? 이 컴파일해야합니까?
미안 상단이 솔루션을 이해하지 않습니다. 스칼라 이해를 여전히 부트 스트랩합니다. 나는 = : = 콤보를 보았지만 그것을 참조 할 수는 없습니다. Funnily 나는 C#으로 3 번째 달을 다시 보았습니다. C# 컴파일러는이를 받아 들일 수 없습니다. 가능하다면, Hex와 Side 내에서 추상적 인 타입을 사용하고 싶습니다. 비록 그것을 포함하고있는 콜렉션에 제네릭을 사용할 것입니다. –