1
我试图确保与特质Func
类(代表一些符号数学表达式)拥有一个方法,将返回一个数值函数(实现符号表达式) 。斯卡拉:'类需要抽象'执行高阶函数
trait Func {
def func[T](x: T): T=>Double
}
case class Const(d: Double) extends Func {
def func[T]: (T=>Double) = (x: T)=>d
}
object Main extends App {
val c = new Const(3.142)
val cAt1 = c.func(1.0)
println(s"c(1.0)=$cAt1") // expected: c(1.0)=3.142
}
这将返回以下错误:
[error] /projects/tutdiff/diff.scala:6: class Const needs to be abstract, since method func in trait Func of type [T](x: T)T => Double is not defined
[error] case class Const(d: Double) extends Func {
[error] ^
我很感兴趣,为什么func
在Const
实现不符合要求。但是这也意味着一个类必须是抽象的或不是(Scala的新手)。
编辑:====================
这是我立刻找签名。
trait Func {
def func[T]: T=>Double
}
case class Const(d: Double) extends Func {
def func[T]: T=>Double = (x: T) => d
}
使用类型参数T
应该是后续问题的主题。