Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala中的协方差-不理解示例_Scala - Fatal编程技术网

Scala中的协方差-不理解示例

Scala中的协方差-不理解示例,scala,Scala,我正在读这篇文章。。。 我不明白以下两者之间的区别 def sayHi(people:List[Person]) = people.map { println _ } def sayHi[T <: Person](people: List[T]) = people.map { println _ } def sayHi(people:List[Person])=people.map{println} 德夫萨伊[不要忽略那篇博文。这些示例都是糟糕的代码,对解释没有帮助。请尝试。使用第二种

我正在读这篇文章。。。

我不明白以下两者之间的区别

def sayHi(people:List[Person]) = people.map { println _ }
def sayHi[T <: Person](people: List[T]) = people.map { println _ }
def sayHi(people:List[Person])=people.map{println}

德夫萨伊[不要忽略那篇博文。这些示例都是糟糕的代码,对解释没有帮助。请尝试。使用第二种方法有很好的理由,但博文没有探讨它。它允许您在方法签名中使用
T
,而不仅仅是不太明确的
。也就是说,您可以返回一个
Employee
谢谢ggovan。我做了一些其他的调查,现在理解得更好了一些。Scala中的列表类型是协变的,所以这就是为什么前者可以在上面工作的原因,但是如果您使用的是java.util.List,它是不变的,那么它将不会,也就是说,您将无法将java.util.List[Employee]传递给java.util.List[Person]类型你说得对,这不是一篇很有说明性的文章,我会去代码学校看看。