2017-11-08 6 views
1

저는 스칼라에 대해 매우 익숙하며 간단한 Map[String, String]을 가지고 있습니다.키가 스칼라에 존재하는지 확인하십시오.

예지도 :

val map = Map("a" -> "abc", "b" -> "xyz") 

내가지도에서 특정 키 현재는 다음 암호화() 메서드 가치에와 키가없는 경우 다음 빈 문자열을 반환 호출하면 로직을 작성하려면 . 나는이 작업을 수행 할 수

한 가지 방법은 다음과 같습니다

encrypt(map.getOrElse(MARKETPLACE_ID.toString, "")) 

이 키를 넣다가없는 및 ​​암호화() 메소드가 빈 문자열을 사용하여 호출됩니다 실패합니다.

이 문제를 가장 쉽게 해결할 수 있도록 도와주세요.

답변

3
map.get(MARKETPLACE_ID.toString).map(encrypt).orElse("") 

당신은, Option 함께 할 OptionNoneOptionencryptmaporElse 얻을 수 있습니다.

+0

, 당신은 오히려 orElse' ('orElse')'보다'getOrElse'를 사용해야으로 단순히 사용 if 문을 수행 할 수는 대체'옵션 [문자열]'시간이 걸립니다 'getOrElse'는 폴백'String'을 취합니다). –

3

map.getOption을 반환하면 fold 메서드를 사용할 수 있습니다.

map.get(MARKETPLACE_ID.toString).fold("")(encrypt) 
0

당신은 실제로

if(map.keySet.contains(MARKETPLACE_ID.toString)){ 
    encrypt(map(MARKETPLACE_ID.toString)) 
}