小编mon*_*ivo的帖子

Scala链接条件映射-`ifDefined`方法

有没有更简洁的方法来有条件地映射一个值,如:

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)
Run Code Online (Sandbox Code Playgroud)

我希望有ifDefined一种适用于所有类型的方法,如下例所示。这将删除.getOrElse(...)呼叫。

dbQuery
  .ifDefined(userName)((d, u) => d.copy(userName = u)
  .ifDefined(address)((d, a) => d.copy(address = a)
Run Code Online (Sandbox Code Playgroud)

if-statement scala option-type

4
推荐指数
1
解决办法
66
查看次数

标签 统计

if-statement ×1

option-type ×1

scala ×1