gpt4 book ai didi

scala - 通过 map 方法绕过方差检查

转载 作者:行者123 更新时间:2023-12-04 18:18:52 26 4
gpt4 key购买 nike

Set它的类型参数是不变的,所以显然这行不通:

val set: Set[Any] = Set[Int](1, 2, 3)

但那为什么会这样呢?
val set: Set[Any] = Set[Int](1, 2, 3).map(identity)

谁能解释一下?谢谢

最佳答案

首先,identity接受一个类型参数。在这种情况下,类型参数为 identity推断为 Any ,那么传递给 map 的是什么?是 identity[Any] (Any => Any 函数)。 map期待 Int => A对于某些类型 A .由于函数的参数类型是逆变的,Any => Any可以通过那里。因此,您的代码所做的是通过将每个原始集合的元素映射为类型 Any 来创建一个新集合。 .完整的类型可以这样写:

val set: Set[Any] = Set[Int](1, 2, 3).map[Any, Set[Any]](identity[Any])

关于scala - 通过 map 方法绕过方差检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55437995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com