EDIT : riscritto questa domanda sulla base della risposta originale
La scala.collection.immutable.Set
classe non è covariante nel suo parametro di tipo. Perchè è questo?
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"))
compila anche su 2.10, poiché Scala sembra essere in grado di dedurre il giusto tipo di Set. Tuttavia, non funziona con le conversioni implicite ( stackoverflow.com/questions/23274033/… ).
foo(s.toSet[CharSequence])
compila bene. IltoSet
metodo è O (1): avvolgeasInstanceOf
.