В 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]?