相关疑难解决方法(0)

Set中&function的奇怪行为

Set被定义为Set[A].它需要一个变量参数.由于我们正在传递共变量参数,因此在下面执行的工作正常:

scala> val a = Set(new Object)
a: scala.collection.immutable.Set[Object] = Set(java.lang.Object@118c38f)

scala> val b = Set("hi")
b: scala.collection.immutable.Set[String] = Set(hi)

scala> a & b
<console>:10: error: type mismatch;
 found   : scala.collection.immutable.Set[String]
 required: scala.collection.GenSet[Object]
Note: String <: Object, but trait GenSet is invariant in type A.
You may wish to investigate a wildcard type such as `_ <: Object`. (SLS 3.2.10)
              a & b
Run Code Online (Sandbox Code Playgroud)

但下面的工作原理:

scala> Set(new Object) & Set("hi")
res1: scala.collection.immutable.Set[Object] = Set()
Run Code Online (Sandbox Code Playgroud)

在我看来,scala编译器转换Set("hi") …

generics scala

8
推荐指数
1
解决办法
705
查看次数

标签 统计

generics ×1

scala ×1