Case类可以扩展特征并使用其字段实现它。
trait IWork {
def itWorks: String
}
case class Example(itWorks: String) extends IWork
它编译并正常工作。你能解释一下,为什么不能编译?
trait IsAfter {
def after(test: Date): Boolean
}
case class Example2(after: Date => Boolean) extends IsAfter
答案 0 :(得分:5)
您可以使用def
实现抽象val
,这就是您在第一个示例中所做的事情。
但是,你假设方法和功能是一样的。不幸的是,情况并非如此,尽管scala编译器尽最大努力隐藏这一事实。
Here's a thorough explanation of the differences
因此,您无法使用函数实现抽象方法,但必须执行类似
的操作class Example2(a: Date => Boolean) extends IsAfter {
def after(test: Date) = a(test)
}