建立一個階immutable.TreeMap到目前爲止,我可以,唯一的辦法是使用:尋找一種方式來從列表
var ans: TreeMap[Int, Int] = immutable.TreeMap(List(1,2,3).map(e => (e, e*2)): _*)
1)是否有辦法做到這一點,而不使用可變參數_ *句法?
2)這種模式在scala中是一個很好的實踐嗎?
建立一個階immutable.TreeMap到目前爲止,我可以,唯一的辦法是使用:尋找一種方式來從列表
var ans: TreeMap[Int, Int] = immutable.TreeMap(List(1,2,3).map(e => (e, e*2)): _*)
1)是否有辦法做到這一點,而不使用可變參數_ *句法?
2)這種模式在scala中是一個很好的實踐嗎?
有沒有辦法做到這一點,而不使用vararg _ *語法?
由於上TreeMap
的apply
方法採用(A, B)*
類型的可變參數,我沒有看到任何其他內置的方式
是這種模式在Scala中的好做法?
我不明白爲什麼它不會。
另一種方法是提供可以工作的toTreeMap
地圖形式的擴展方法。
1)其他的方法是創建一個空的TreeMap中,再加入所有元素:
immutable.TreeMap.empty[Int, Int] ++ (List(1,2,3).map(e => (e, e*2)))
我沒有強烈的感情有關哪種方式更好。
2)是的,這是相當普遍的。
1)有沒有辦法做到這一點,而不使用vararg _ *語法?
是的,您可以使用breakOut
參數map
。注意,這需要對變量
import scala.collection.breakOut
import scala.collection.immutable.TreeMap
val ans: TreeMap[Int, Int] = List(1,2,3).map(e => (e, e*2))(breakOut)
2顯式類型批註)是這種模式在Scala中的好做法?
直到在Scala 2.13中的集合允許你寫list.to(TreeMap)
,沒關係。我的意思是,這不是有更好的選擇,所以使用任何解決你的問題。
哈,我總是忘記你可以'++'列表地圖。 –