Scala: фильтрация набора параметров

Допустим, у меня есть функция, которая проверяет, применима ли какая-либо операция к экземпляру A, и, если да, возвращает экземпляр B или None:

   def checker[A,B]( a: A ) : Option[B] = ...

Теперь я хочу сформировать новую коллекцию, содержащую все допустимые экземпляры B, отбросив значения None. Следующий код, похоже, справляется с этой задачей, но, безусловно, есть способ лучше:

   val as = List[A]( a1, a2, a3, ... )
   val bs = 
     as
     .map( (a) => checker(a) )    // List[A] => List[Option[B]]
     .filter( _.isDefined )       // List[Option[B]] => List[Option[B]]
     .map( _.get )                // List[Option[B]] => List[B]

Спасибо!

17
задан Gregor Scheidt 28 September 2011 в 07:48
поделиться