В настоящее время я работаю над реализацией A * в Scala. Чтобы выполнить чистую структуру, я хотел бы использовать вложенную структуру классов case, которая реализует самоограниченный признак. Тем не менее, я испытываю некоторые проблемы при реализации этого в среде Scala IDE. Следующий код не скомпилируется:Scala вложенный класс класса самоограничивающегося наследования
trait A[T <: A[T]]
class B {
case class C(int: Int) extends A[C] // A[this.C] won't work either
def make = C(5)
}
object D {
def foo[T <: A[T]](some: T) = {}
val c = new B().make
foo(c) // this does not compile
}
Есть ли способ, которым я могу заставить эту структуру работать?
Приятная объяснение пути в зависимости от типов могут быть найдено по адресу http://stackoverflow.com/questions/2693067/what-is-meant-by-scalas-path-dependent-types – manub