Полиморфная функция Scala для фильтрации входного списка либо

Ищем более элегантное решение

У меня есть этот фрагмент кода, я просто использую его в тестовых случаях, когда нет необходимости выполнять какую-либо обработку ошибок. Что он делает:

  • взять входной список строк
  • разобрать их с помощью метода DSJSonmapper.parseDSResult
  • фильтрует их и извлекает из каждого значение Right (Left is a Exception)

Код выглядит следующим образом:

  def parseDs(ins: List[String]) = {
    def filterResults[U, T](in: List[Either[U, T]]): List[T] = {
      in.filter(y => y.isRight).map(z => z.right.get)
    }
    filterResults(ins.map(x => DSJsonMapper.parseDSResult(x)))
  }

Я не делал очень много полиморфных функций, но это работает. Однако мне кажется, что это немного некрасиво. У кого-нибудь есть лучшее предложение, как сделать то же самое.

Я знаю, что это будет зависеть от личных предпочтений. Но предложения приветствуются.

7
задан Bryan Hunt 8 August 2012 в 15:51
поделиться