Данный пример:
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
. Я знаю, что могу смоделировать это по-другому, но было бы неплохо узнать, возможно ли это вообще?