Scala의 Key-Value Collection인 Map에는 withDefault와 withDefaultValue 메소드가 있다. 이 메소드들은 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]
'Scala' 카테고리의 다른 글
Scala와 Java에서 일반적인 파일 입출력 (0) | 2017.05.11 |
---|---|
Scala 부분 함수(PartialFunction)의 runWith, andThen (0) | 2017.05.10 |
Scala의 Future의 map, for, recover (0) | 2017.04.16 |
Scala의 함수 커링(Currying)과 표현 (0) | 2017.04.14 |
Scala Function Object의 메소드들 (0) | 2017.04.01 |