Say Я использую выражение матч, чтобы проверить значение, которое может или не может быть в объекте на карте следующим образом:Scala избежать дублирования кода
map.get(key) match {
case Some(value) if (cond1(value)) => res1(value)
case Some(value) if (cond2(value)) => res2()
case None => res2()
case _ => // None of the above
}
Как вы можете видеть, что я хочу, чтобы вызвать res2 в любом случае, когда у меня есть значение для моего ключа, и оно соответствует условию 2 или у меня нет значения для ключа. Может ли кто-нибудь предложить лучшую конструкцию, которая позволит избежать дублирования вызовов res2() в примере выше?
Благодаря Des
* К сожалению, я понял, что пример кода не совсем правильно и соответствующим образом обновлены. Я только хочу вызвать res2 в случае, когда значение для ключа соответствует cond2 ИЛИ нет записи для ключа.
Это лучший ответ, если ОП не ожидает побочных эффектов от 'cond2', который он не должен. – yan
OP обновил свой вопрос и сделал этот ответ недействительным: он хочет вызвать 'res2()', если значение, связанное с 'key', соответствует' cond2', или нет значения, связанного с 'key'. Этот ответ также называет его, если есть значение, связанное с 'key', которое не соответствует ни условию' cond1', ни 'cond2'. –
@ user79074 Ответить обновлено, чтобы соответствовать обновленному вопросу. –