Лучший способ превратить списки любого из списков в один из списков?

У меня есть некоторый код, подобный приведенному ниже, где у меня есть список Eithers, и я хочу превратить его в Either of Lists ... в частности (в этом случае), если в списке есть какие-либо левые , то я возвращаю Left из их списка, иначе я возвращаю Right из списка прав.

val maybe: List[Either[String, Int]] = getMaybe
val (strings, ints) = maybe.partition(_.isLeft)
strings.map(_.left.get) match {
  case Nil => Right(ints.map(_.right.get))
  case stringList => Left(stringList)
}

Вызов get всегда заставляет меня чувствовать, что я, должно быть, что-то упускаю.

Is есть ли более идиоматический способ сделать это?

33
задан Eric Bowman - abstracto - 27 June 2011 в 07:01
поделиться