Как абстрагироваться от параметров ограниченного типа в Scala? - PullRequest
0 голосов
/ 27 сентября 2019

Скажем, я работаю над проектом, в каждом определении функции которого есть A <: Foo with Bar[A] with Baz[A], например:

def listSomething[A <: Foo with Bar[A] with Baz[A]](query: String): List[A] = ???

def readSomething[A <: Foo with Bar[A] with Baz[A]](id: Long): Option[A]

Возможно ли удалить это дублирование?Я пытался определить псевдоним типа, но это не сработало.Единственное, что я мог придумать, - это рассматривать их как члены абстрактного типа, но тогда мне пришлось бы превращать функции в черты, и, возможно, есть лучший способ.

1 Ответ

1 голос
/ 27 сентября 2019
trait Foo
trait Bar[A]
trait Baz[A]
trait All[A] extends Foo with Bar[A] with Baz[A]
def listSomething[S <: All[S]](query: String): List[S] = ???
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...