EDITAR : reescribió esta pregunta según la respuesta original
La scala.collection.immutable.Set
clase no es covariante en su parámetro de tipo. ¿Por qué es esto?
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
}
fuente
foo(s.toSet[CharSequence])
compila bien. EltoSet
método es O (1), simplemente envuelveasInstanceOf
.foo(Set("Hello", "World"))
compila en 2.10, ya que Scala parece ser capaz de inferir el tipo correcto de Set. Sin embargo, no funciona con conversiones implícitas ( stackoverflow.com/questions/23274033/… ).