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
應該是後續問題的主題。