Scala 模式匹配

Scala patternmatching

我在 Scala 中有以下模式匹配代码:

response.flatMap(employee =>
            employee match {
              case e if e.type == Manager => e.headoffice
              case e if e.type == Clerk => e.branch
              case _ => None
            }
          )

这是进行模式匹配的最佳方式吗?能再简洁点吗?

我个人会这样做:

response.map(e => e -> e.`type`).flatMap {
  case (e, Manager) => e.headoffice
  case (e, Clerk) => e.branch
  case _ => None
}

您可以尝试匹配 type:

response.flatMap(e => e.type match {
    case Manager => e.headoffice
    case Clerk => e.branch
    case _ => None
})