BEARBEITEN : Diese Frage wurde basierend auf der ursprünglichen Antwort neu geschrieben
Die scala.collection.immutable.Set
Klasse ist in ihrem Typparameter nicht kovariant. Warum ist das?
import scala.collection.immutable._
def foo(s: Set[CharSequence]): Unit = {
println(s)
}
def bar(): Unit = {
val s: Set[String] = Set("Hello", "World");
foo(s); //DOES NOT COMPILE, regardless of whether type is declared
//explicitly in the val s declaration
}
foo(Set("Hello", "World"))
auch auf 2.10 kompiliert wird, da Scala in der Lage zu sein scheint, den richtigen Set-Typ abzuleiten. Es funktioniert jedoch nicht mit impliziten Konvertierungen ( stackoverflow.com/questions/23274033/… ).
foo(s.toSet[CharSequence])
kompiliert. DietoSet
Methode ist O (1) - sie wird nur umbrochenasInstanceOf
.