假设我有一个 F 有界多态性状:
sealed trait FBound[Me <: FBound[Me]]
case class A() extends FBound[A]
case class B() extends FBound[B]
如果我有一个可以是任何实例的集合,我该如何使用它?
val canBeEither: Option[FBound[_]] = Some(B())
// error: type arguments [_$1] do not conform to trait FBound's type parameter bounds [Me <: FBound[Me]]
canBeEither.collect({ case b: B => b}).foreach(b => println("got a B!"))