gpt4 book ai didi

scala - 案例类实现特征

转载 作者:行者123 更新时间:2023-12-05 01:01:48 26 4
gpt4 key购买 nike

Case 类可以扩展 trait 并使用其字段实现它。

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

最佳答案

你可以实现一个抽象 def使用 val这就是你在第一个例子中所做的。

但是,您是在方法和函数是同一回事的假设下工作的。不幸的是,事实并非如此,尽管 Scala 编译器尽了最大努力来隐藏这一事实。

Here's a thorough explanation of the differences .

出于这个原因,您不能使用函数实现抽象方法,但您必须执行类似的操作

class Example2(a: Date => Boolean) extends IsAfter {
def after(test: Date) = a(test)
}

关于scala - 案例类实现特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491378/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com