Scala 抽象类型成员
Scala Abstract Type Member
我注意到我可以用抽象类型成员实例化 Scala 特征。下面的代码编译。但是t.B是什么?
trait A {
type B
}
val t = new A {}
类型为t.B
。
trait A {
type B
def f(b: B)
}
val t = new A { def f(b: B) = {} }
t.f(0)
有错误
error: type mismatch;
found : Int(0)
required: t.B
类型不必像方法那样"overriden"。
这个类型是它自己的东西。不是很有用,但就是这样。
与所有其他类型一样,它是 Any
的子类型和 Nothing
的超类型。
Seq[t.B](): Seq[Any]
Seq[Nothing](): Seq[t.b]
这就是关于它的所有内容。
我注意到我可以用抽象类型成员实例化 Scala 特征。下面的代码编译。但是t.B是什么?
trait A {
type B
}
val t = new A {}
类型为t.B
。
trait A {
type B
def f(b: B)
}
val t = new A { def f(b: B) = {} }
t.f(0)
有错误
error: type mismatch;
found : Int(0)
required: t.B
类型不必像方法那样"overriden"。
这个类型是它自己的东西。不是很有用,但就是这样。
与所有其他类型一样,它是 Any
的子类型和 Nothing
的超类型。
Seq[t.B](): Seq[Any]
Seq[Nothing](): Seq[t.b]
这就是关于它的所有内容。