假設您有一個列表(1,「1」)它是鍵入列表[任何],這當然是正確的和預期的。現在,如果我像這樣映射列表斯卡拉過濾器的集合類型
scala> List(1, "1") map {
| case x: Int => x
| case y: String => y.toInt
| }
生成的類型是List [Int],這也是預期的。我的問題是如果有一個相當於過濾器的映射,因爲下面的例子將導致List [Any]。這可能嗎?我認爲這可以在編譯時解決,可能不是運行時?
scala> List(1, "1") filter {
| case x: Int => true
| case _ => false
| }
這是爲什麼只有警衛纔有可能? – 2010-02-08 21:08:06
對不起,這是一個非常愚蠢的評論。但爲什麼filter()不生成像partialMap一樣的結果? – 2010-02-09 11:11:35
@Joa'filter'不會更改集合的類型,因爲它不會修改其元素。 – 2010-02-09 15:29:25