如何在Scala中设置多个类型边界?

oxb*_*kes 67 generics scala

我希望能够声明这样的东西:

trait Narrowable[A] extends Iterable[A] {

    def narrow[B <: A & B <: AnyRef] : Iterable[B]

}
Run Code Online (Sandbox Code Playgroud)

它的类型B应该是既有的亚型A AnyRef.这可能吗?

Wal*_*ang 105

使用复合类型:

trait Narrowable[A] extends Iterable[A] {
  def narrow[B <: A with AnyRef] : Iterable[B]
}
Run Code Online (Sandbox Code Playgroud)

  • @Walter Chang怎么样**或/两个上限中的任何一个**`def narrow [B <:A | B <:AnyRef]:Iterable [B]` (7认同)
  • 如果您需要上限和上下文边界怎么办? (2认同)