내가 할 수있는 값을 테스트하기 위해 일치 식을 사용하고 있습니다 또는 다음과 같이 Map 객체에 있지 않을 수 있습니다 말 코드 중복을 피하고 두 경우 모두 내 키 값을 가지고 있으며 조건 2를 충족하거나 키 값이 없습니다. 누구든지 위의 예제에서 res2()에 대한 중복 호출을 피할 수있는 더 나은 구조를 제안 할 수 있습니까?스칼라 일치 식
감사 데
* 죄송합니다 나는 코드 샘플은 아주 정확하지이었고, 그에 따라 업데이트 한 것을 깨달았다. 키에 대한 값이 cond2와 일치하거나 키에 대한 항목이없는 경우에만 res2를 호출하려고합니다. key
의 종류가 무엇이든 함께 [String
] 교체
map.get(key) match {
case Some(value) if (cond1(value)) => res1(value)
case o: Option[String] if (o.forall(cond2)) => res2()
case _ =>
}
:
case Some(value) => if (cond1(value)) res1(value) else res2()
OP가 'cond2'의 부작용을 기대하지 않는 경우 가장 좋은 대답입니다. 그럴 필요가 없습니다. – yan
OP는 그의 질문을 업데이트했고이 대답을 무효로 만들었습니다 :'key'와 관련된 값이'cond2'와 일치하거나'key'와 연관된 값이 없다면'res2()'를 호출하려고합니다. 이 응답은'key1 '과'cond2'가 일치하지 않는 값이 있다면 그것을 호출 할 것입니다. –
@ user79074 업데이트 된 질문과 일치하도록 답변 됨. –