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。
我想你正在嘗試與[typeclasses](https://tpolecat.github.io/2015/04/29/f-bounds.html)和[輔助模式](https://gigiigig.github.io/posts/2015/09/13/aux-pattern.html)。 – Reactormonk
聲明類型綁定爲協變或綁定<:PyBinding打破了一些其他函數的類型檢查,我不確定它是否值得。 – tribbloid
@tribboid ...我給了你一個不好的文檔,這讓你錯過了這一點。試試這個:http://typelevel.org/cats/typeclasses.html – Reactormonk