Подтвердить что ты не робот

Как настроить несколько ограничений типов в Scala?

Я хочу иметь возможность объявить что-то вроде этого:

trait Narrowable[A] extends Iterable[A] {

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

}

Чтобы это, тип B должен быть как подтипом A, так и AnyRef. Возможно ли это?

4b9b3361

Ответ 1

Использовать составной тип:

trait Narrowable[A] extends Iterable[A] {
  def narrow[B <: A with AnyRef] : Iterable[B]
}