这不是有效的类型定义:
scala> type Addable = { def +(subject: Addable) }
<console>:4: error: illegal cyclic reference involving type Addable
type Addable = { def +(subject: Addable) }
这可以用scala表示吗?
答案 0 :(得分:4)
不,它不能。
Scala语言规范版本2.7的第40页:
但是,如果a是静态错误 type alias以递归方式引用 定义的类型构造函数本身。那 是,类型别名中的类型 T 类型 t [tps] = T 可能无法直接或间接引用该名称 吨
答案 1 :(得分:1)
这就是我在我写的库中所做的,HTH:
trait Addable {
type AddableType <: Addable
def + (subject: AddableType): AddableType
}
trait Rational extends Addable {
type AddableType = Rational
override def + (subject: Rational): Rational
}
答案 2 :(得分:0)
似乎这可能会在Scala 2.8中“修复”: