編集:この質問を元の回答に基づいて書き直しました
scala.collection.immutable.Set
クラスは、その型パラメータの共変ではありません。どうしてこれなの?
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"))
Scalaは正しいタイプのSetを推測できるように見えるため、2.10 でもコンパイルされることにも注意してください。ただし、暗黙的な変換では機能しません(stackoverflow.com/questions/23274033/…)。
foo(s.toSet[CharSequence])
正常にコンパイルできることは注目に値します。toSet
それだけラップ-方法は、O(1)ですasInstanceOf
。