Scala trait 作为函数 return 类型
Scala trait as a function return type
如果我有特征 A 和 B
trait A {
def funcA(a: Int): B
}
trait B {
var bvariable: Int
def funcB(b: Int): Int
}
有没有可能有以上的?如果是,我可以覆盖 class 中的函数,但是我如何初始化 bvariable
因为我无法创建特征的实例,因此没有构造函数?
当您声明一个特征时,实现它的 class 必须为其成员提供特征方法和值的实现。例如 classB 可以像这样实现特征 B:
class classB extends B{
override var bvariable: Int = 0
override def funcB(b: Int): Int = {
0
}
}
如果你不为 bvariable 提供一个值,scala 编译器会抱怨没有实现所有的特征成员
如果我有特征 A 和 B
trait A {
def funcA(a: Int): B
}
trait B {
var bvariable: Int
def funcB(b: Int): Int
}
有没有可能有以上的?如果是,我可以覆盖 class 中的函数,但是我如何初始化 bvariable
因为我无法创建特征的实例,因此没有构造函数?
当您声明一个特征时,实现它的 class 必须为其成员提供特征方法和值的实现。例如 classB 可以像这样实现特征 B:
class classB extends B{
override var bvariable: Int = 0
override def funcB(b: Int): Int = {
0
}
}
如果你不为 bvariable 提供一个值,scala 编译器会抱怨没有实现所有的特征成员