covariant
-
Variance 문제scala/basic 2021. 10. 22. 21:30
scala 에서 이해하기 가장 어려운 부분 중 하나가 Variance 일 것이다. Variance 를 이해 했다면 다음 문제를 풀어보자. 문제1 아래와 같이 정의했을 때 trait Sum[+A, +B] { def flatMap[C](f: B => Sum[A, C]): Sum[A, C] = ??? } 다음과 같은 에러 메시지를 보게 될 것이다. error: covariant type A occurs in contravariant position in type B => Sum[A,C] of value f 이를 해결하려면 어디를 수정해야 할까? 아래와 같이 작성하면 된다. (Why?) trait Sum[+A, +B] { def flatMap[T >: A, C](f: B => Sum[T, C]): Sum[T, ..