试图理解Scala中的扩展语法

时间:2014-06-02 20:22:17

标签: scala

我最近看到了以下代码,我正在尝试理解语法。

我不明白的是object Widget extends ((Int, String, DateTime) => Widget )部分。有人可以解释语法和这里发生了什么?

case class Widget(
  id      : Int,
  name    : String,
  created : DateTime = now
)

object Widget extends ((
  Int,
  String,
  DateTime
) => Widget) { ..... }

1 个答案:

答案 0 :(得分:3)

简短的回答是,您的对象正在扩展Function类型,该类型将IntStringDateTime类型的三元组作为输入,并返回{{1 }}。因此,您需要覆盖Widget函数。完成后,您将创建一个名为apply(Int, String, DateTime)的函数。这实际上是Widget在幕后为您实现的。在这种情况下,我相信您的case class对象对该函数的定义将优先于默认的Widget