특성의 유형 매개 변수에 대한 제한을 완화하고 대신이를 증거 매개 변수 형식의 메소드에 적용하려고합니다. 일부 골격 설정을 감안할 때 :유형 매개 변수의 증명 매개 변수에 대한 상한 교환
trait StateX[Repr <: StateX[Repr]] extends State[Repr] {
protected def reader: Reader[Repr]
def observe: Observer[Repr] = Observer(reader)
}
을 그리고 이것은하지 않습니다 :
trait State[Repr]
object Observer {
def apply[Repr <: State[Repr]](reader: Reader[Repr]): Observer[Repr] =
new Observer[Repr] {}
}
trait Observer[A]
trait Reader [A]
이 작동
trait StateY[Repr] extends State[Repr] {
protected def reader: Reader[Repr]
def observe(implicit ev: Repr <:< State[Repr]): Observer[Repr] = Observer(reader)
}
메시지 "inferred type arguments [Repr] do not conform to method apply's type parameter bounds [Repr <: State[Repr]]"
으로. ev
증거가이 고찰을 제안하기 때문에, 나는 어떻게 StateY
을 고칠 수 있는지 궁금합니다.