1
abstract class Dog[+T,-U,V] {
    def bark[A >: Dog[T,Dog[U,T,V],Dog[V,V,V]], B <: Dog[U,T,V]](
    stranger: A,
    listener: (Dog[U,T,A]=>B)=>B
    ): Dog[Dog[T,U,V], T=>U, B]
}

这是我作业中的问题之一,这完全让我感到困惑。该问题询问编译器是否会报告错误。我了解协变和逆变如何与单一类型一起工作。

以上是我的想法,如有错误请指正。

def bark[A >: Dog[T,Dog[U,T,V],Dog[V,V,V]], B <: Dog[U,T,V]]

这一行 A 和 B 都是类型参数位置,应该翻转,B 应该是 B >: Dog[U,T,V],但是对于程序的其他部分,我不知道发生了什么。

4

0 回答 0