0
я следующие классы определены:В scala, почему тип псевдонима в классе не может быть передан для наследования?
файл: PyRef.scala:
package mypackage
class PyBinding() {
...
}
trait PyRef {
type Binding = PyBinding
}
файл: Link.scala:
class Link() extends PyRef {
override type Binding = Link.PyBindingImpl
}
object Link {
class PyBindingImpl() extends PyRef#Binding() {
}
}
В сборнике, была выброшена следующее сообщение об ошибке:
Error:(222, 34) class type required but mypackage.PyBinding found
) extends PyRef#Binding() {
Почему это происходит, и что мне делать, чтобы обойти его? Я использую Scala 2.10.
Я думаю, что вы пытаетесь построить что-то с [классы типов] (https://tpolecat.github.io/2015/04/29/f-bounds.html) и [ aux pattern] (https://gigiigig.github.io/posts/2015/09/13/aux-pattern.html). – Reactormonk
Объявление типа Связывание как ковариантное или связывание <: PyBinding разбивает несколько других типов функций, я не уверен, стоит ли это. – tribbloid
@tribboid ... Я дал вам плохой документ, который заставил вас пропустить момент. Попробуйте следующее: http://typelevel.org/cats/typeclasses.html – Reactormonk