Scala

Scala, Map Collection의 withDefault, withDefaultValue 메소드

partner_jun 2017. 5. 9. 22:21

Scala의 Key-Value Collection인 Map에는 withDefaultwithDefaultValue 메소드가 있다. 이 메소드들은 Map에 Key가 없을 때의 기본 값을 지정해 준다.


val baseMap = Map[String, String] ( "Hello" -> "World", // 기본적인 Map
"One" -> "1",
"Two" -> "2" )


withDefault 메소드는 부분 함수를 입력받아 Key가 없으면 부분 함수에서 매칭된 값을 반환하는 Map을 만들어 준다.

val defaultMap1 = baseMap.withDefault { // withDefault 메소드는 부분 함수를 입력받는다.
case "Number" => "numb"
case _ => "None!"
}

println( defaultMap1("Three") ) // "None!"
println( defaultMap1("Number") ) // "numb"


withDefaultValue 메소드는 Key-Value 중 Value를 입력받아 Key가 없으면 입력된 Value를 반환하는 Map을 만들어 준다.

val defaultMap2 = baseMap.withDefaultValue("Empty!") // withDefaultValue는 Value를 입력받는다.

println( defaultMap2("Four") ) // "Empty!"
println( defaultMap2("Five") ) // "Empty!"


이 두 가지 메소드로 만들어진 Map도 기본적인 Map과 마찬가지로, .get(KEY) 메소드를 이용하면 기본 값 대신 Option[Value] 타입을 반환한다.

println( baseMap.get("?") ) // None : Option[String]
println( defaultMap1.get("?") ) // None : Option[String]
println( defaultMap2.get("?") ) // None : Option[String]