通过map方法规避差异检查

时间:2019-03-31 04:54:20

标签: scala

Set的type参数是不变的,因此显然这是行不通的:

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

但是为什么行得通呢?

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

有人可以解释吗?谢谢

1 个答案:

答案 0 :(得分:6)

首先,identity使用类型参数。在这种情况下,identity的类型参数被推断为Any,因此传递给map的是identity[Any]Any => Any函数)。 map期望某个类型Int => A的{​​{1}}。由于函数的参数类型是互变的,因此可以在其中传递A。因此,您的代码要做的是通过将原始集合的每个元素映射为类型Any => Any来创建一个新集合。完整类型可以这样写出来:

Any