亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么Scala的不可變Set在其類型中不協變?

為什么Scala的不可變Set在其類型中不協變?

FFIVE 2019-08-27 16:05:23
為什么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。


查看完整回答
反對 回復 2019-08-27
  • 3 回答
  • 0 關注
  • 625 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號