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

Ahh、はい、ありがとうございます! –

+1

@SurenderRajaあなたは受け入れられたとして答えをマークしてください。そして、答えをアップにするかもしれない。 –

+1

なぜ誰も答えをdownvoteだろうか? –

関連する問題