2017-11-20 8 views
0

이있는 트리 데이터 구조를 정의 다음과 같은 트리 인스턴스입니다. 인스턴스의 유형은 Tree[Int, Any]입니다. 나는 또한 E에 대한 반 변형 유형을 원하지 않습니다.어떻게 여기 내 초기 생각 나는, 가장자리의 레이블이 트리 자료 구조를 정의 할 에지 형

val tree = 
    Branch(0, 
     Map(
     "a" -> Leaf(1), 
     "b" -> Branch(2, 
      Map(
      "c" -> Leaf(4)))) 
    ) 

이 Tre을 구현하는 데 더 좋은 방법이 무엇인지 알고 싶습니다. 픽스 타입 클래스와 재귀 스키마에 대해 들어 봤지만 유용 할 지 모르겠다.

답변

0

LeafTree[N, Nothing]이 아니고 Tree[N, Unit]이 아닙니다. Nothing은 하단 유형이므로 의미가 Leaf[N] 인 경우 E의 하위 유형은 Tree[N, E]이며, 공변 적이므로 적용됩니다.

case class Leaf[N](value:N) extends Tree[N, Nothing] 

이렇게 변경하면 예제 트리 정의가 올바르게 작동합니다.

고정 점 유형은 더 복잡하지만 항상 필요한 것은 아닙니다. 그러나 당신은 이것을 사용하기 위해 이것을 확실히 수정할 수 있습니다. 당신이 그 길을 가고 싶다면, 좀더 구체적인 질문을하는 것이 낫습니다.

+0

네, 확장을 잊어 버렸습니다. 잎을 아무 것도 확장하지 않으면 잘 작동하고 부주의했습니다! – Omid