2016-08-22 33 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

为什么会有人低估答案? –

相关问题