Это было бы более четко выражено при сопоставлении с образцом.
getLoginAttempts(username) match {
case Some(attempts) if attempts <= MAX_ATTEMPTS => handleFailure(username, attempts)
case _ => sendNotification()
}
Позже это также облегчает задачу, если вы хотите отличить корпус None
от корпуса Some(attempts), attempts > MAX_ATTEMPTS
. ИМХО, сопоставление с образцом менее неясно, чем filter
и map
для значений Option
, которые просто выполняют сопоставление за кулисами.