0
Ich habe definiert die folgenden Klassen:In scala, warum Typ Alias in einer Klasse kann nicht für die Vererbung verwiesen werden?
Datei: PyRef.scala:
package mypackage
class PyBinding() {
...
}
trait PyRef {
type Binding = PyBinding
}
Datei: Link.scala:
class Link() extends PyRef {
override type Binding = Link.PyBindingImpl
}
object Link {
class PyBindingImpl() extends PyRef#Binding() {
}
}
In Zusammenstellung wurde der folgende Fehler ausgelöst:
Error:(222, 34) class type required but mypackage.PyBinding found
) extends PyRef#Binding() {
Warum passiert das und was soll ich tun, um es zu umgehen? Ich benutze Scala 2.10.
Ich glaube, Sie versuchen, etwas zu bauen, mit [typeclasses] (https://tpolecat.github.io/2015/04/29/f-bounds.html) und [die Aux-Muster] (https://gigiigig.github.io/posts/2015/09/13/aux-pattern.html). – Reactormonk
Deklarationstyp Binding als Kovariante oder Binding <: PyBinding bricht ein paar andere Funktionen typcheck, ich bin mir nicht sicher, ob es sich lohnt. – tribbloid
@tribboid ... Ich habe dir einen schlechten Dokumentarfilm gegeben, bei dem du den Punkt verpasst hast. Versuchen Sie dieses: http://typelevel.org/cats/typeclasses.html – Reactormonk