2016-08-22 68 views
0

我有下面的Scala代碼爲什麼List中的空元素在Scala中沒有被默認值取代?

代碼:

object ReplaceNulls { 

    def main(args:Array[String]) = { 
    val myList = List("surender", "", null) 

    val myUpdatedList = myList.map { 
     case a: String => a 
     case null => "OTHERS" 
     case "" => "OTHERS" 
    } 

    println(myUpdatedList) 
} 

這上面的代碼給我下面的輸出

List(surender, , OTHERS) 

但預計產量低於

List(surender,OTHERS,OTHERS) 

什麼在我的代碼中出錯了?

回答

2

因爲「」也是字符串類型,並且將匹配第一種情況,即case a:String。你可以嘗試改變案件陳述的順序

object ReplaceNulls { 

def main(args:Array[String])={ 

val myList = List("surender","",null) 

val myUpdatedList = myList.map { x => x match{ 
               case "" =>"OTHERS" 
               case a:String => a 
               case null => "OTHERS" 

               } 
} 

println(myUpdatedList) 

} 

} 
+0

啊,是的,謝謝! –

+1

@SurenderRaja您能否請您將答案標記爲已接受。並可能會對答案進行投票。 –

+1

爲什麼會有人低估答案? –

相關問題