Общий сбор по типу в scala

В Scala 2.9.1

С

def collectFirstOfT[T](la: List[_])(implicit m:Manifest[T]) : Option[T] = {
  la.collect{case x if m.erasure.isAssignableFrom(x.getClass) => x}.
    headOption.asInstanceOf[Option[T]]}

class A
class B

почему это выражение:

val oB:Option[B] = collectFirstOf(List(new A,new B)) 

компилируется, но собирает Some (A ), но

val oB =collectFirstOf[B](List(new A,new B))

работает нормально.

Как вывести T из Option[T]?

6
задан jwinandy 12 April 2012 в 09:47
поделиться