我最近看到了以下代码,我正在尝试理解语法。
我不明白的是object Widget extends ((Int, String, DateTime) => Widget )
部分。有人可以解释语法和这里发生了什么?
case class Widget(
id : Int,
name : String,
created : DateTime = now
)
object Widget extends ((
Int,
String,
DateTime
) => Widget) { ..... }
答案 0 :(得分:3)
简短的回答是,您的对象正在扩展Function
类型,该类型将Int
,String
和DateTime
类型的三元组作为输入,并返回{{1 }}。因此,您需要覆盖Widget
函数。完成后,您将创建一个名为apply(Int, String, DateTime)
的函数。这实际上是Widget
在幕后为您实现的。在这种情况下,我相信您的case class
对象对该函数的定义将优先于默认的Widget
。