為什么Scala的不可變Set在其類型中不協變?根據原始答案重寫這個問題該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}
3 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
對于任何想知道為什么這個答案似乎有點偏離主題的人,這是因為我(提問者)已經修改了這個問題。
Scala的類型推斷足以讓你知道在某些情況下你需要CharSequences而不是字符串。特別是,以下內容適用于2.7.3:
import scala.collections.immutable._def findCharSequences(): Set[CharSequence] = Set("Hello", "World")
至于如何直接創建immutable.HashSet:不要。作為一個實現優化,少于5個元素的immutable.HashSets實際上不是immutable.HashSet的實例。它們是EmptySet,Set1,Set2,Set3或Set4。這些類是immutable.Set的子類,但不是immutable.HashSet。
添加回答
舉報
0/150
提交
取消