在 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))
工作正常。
如何从 Option[T] 推断 T?