Mandroid
Mandroid

Reputation: 7524

Scala patternmatching

I have following code for pattern matching in Scala:

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

Is this optimum way of doing pattern matching? Can it be made more concise?

Upvotes: 0

Views: 79

Answers (2)

I personally would do it like this:

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

Upvotes: 2

Guru Stron
Guru Stron

Reputation: 143138

You can try matching on type:

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

Upvotes: 3

Related Questions