Scala对象定义中的“extends {..}”子句没有超类名称,该怎么办?

时间:2013-02-22 22:29:17

标签: scala object inheritance syntax

我在 Scala编程中发现了这个代码示例,第2版。(第25章,清单25.11):

object PrefixMap extends {
  def empty[T] = ...

  def apply[T](kvs: (String, T)*): PrefixMap[T] = ...

  ...
}

为什么那里的extends子句没有超类名?它看起来像扩展一个匿名类,但出于什么目的?随附的文字没有解释甚至在任何地方提到这种结构。代码实际上编译并且显然在有或没有它的情况下都能正常工作。

OTOH我在几个网页上找到了完全相同的代码,包括this(看起来像本书章节的原始版本)。我怀疑从现在这么多读者的雷达下面已经过了一个错字...所以我错过了什么?

我试图谷歌它,但努力找到适当的搜索条件。那么有人可以解释这个构造在Scala中是否有名称和/或实际用途吗?

1 个答案:

答案 0 :(得分:3)

对我来说看起来像是打印错误。尽管如此,它仍然会起作用,这可能有助于隐藏它。

无论如何,该对象正在扩展结构类型,但如果最后有with XXX,它也可以是早期初始化。 MMMMM。它看起来更像是一个早期的初始化,没有任何类或特性可以在以后初始化,实际上...结构类型不包含代码,我认为。