Как настроить границы нескольких типов в Scala?

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

trait Narrowable[A] extends Iterable[A] {

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

}

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

1 ответ

Решение

Используйте тип соединения:

trait Narrowable[A] extends Iterable[A] {
  def narrow[B <: A with AnyRef] : Iterable[B]
}
Другие вопросы по тегам