Есть ли более краткий способ условного отображения значения, как в:
val userName: Option[String] = Some("Bob")
val address: Option[String] = Some("Planet Earth")
val dbQuery = new Query()
val afterUserName =
userName.map(u => dbQuery.copy(userName = u))
.getOrElse(dbQuery)
val modifiedQuery =
address.map(a => afterUserName.copy(address = a))
.getOrElse(afterUserName)
Мне бы хотелось, чтобы метод ifDefined
был доступен для всех типов, как в следующем блоке. Это удаляет вызов .getOrElse(...)
.
dbQuery
.ifDefined(userName)((d, u) => d.copy(userName = u)
.ifDefined(address)((d, a) => d.copy(address = a)