Ссылка на абстрактный тип из параметризованного типа - PullRequest
3 голосов
/ 16 ноября 2011

Данный пример:

abstract class Base { type Value }
case object Foo extends Base { type Value = String }

case class Bar[A <: Base](a: A, value: A#Value)

val x = Bar(Foo, "It's a Foo") // Won't compile with found String required ?#Value

Я бы хотел, чтобы ограничение типа для value совпадало с типом для A. То есть String, так как я передаю Foo. Я знаю, что могу смоделировать это по-другому, но было бы неплохо узнать, возможно ли это вообще?

1 Ответ

2 голосов
/ 16 ноября 2011

В качестве отправной точки это компилирует и предоставляет некоторые необходимые вам ограничения.

abstract class Base { type Value }
case object Foo extends Base { type Value = String }

case class Bar[A <: Base, V <: A#Value](a: A, value: V)

val x = Bar(Foo, "It's a Foo")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...