Set*_*sue 23 scala scala-collections
那么为什么List(1,2,3,4).contains("wtf")甚至编译?如果编译器拒绝这个会不会很好?
Dan*_*ral 22
很多有趣的答案,但这是我自己的理论:如果contains没有收到Any,那么Seq就不可能是共同变体.
见,例如Set,这是不是共同的变体,其contains采取A的,而不是一个Any.
其原因留给读者练习.;-)但这里有一个提示:
scala> class Container[+A](elements: A*) {
| def contains(what: A): Boolean = elements exists (what ==)
| }
<console>:7: error: covariant type A occurs in contravariant position in type A of value what
def contains(what: A): Boolean = elements exists (what ==)
^
Run Code Online (Sandbox Code Playgroud)