scala - Scala 对象定义中没有父类(super class)名称的 "extends {..}"子句有什么作用?

标签 scala object inheritance syntax

我在 Programming in Scala, 2nd Ed 中找到了这个代码示例。 (第 25 章,代码 list 25.11):

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

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

  ...
}

为什么是extends没有父类(super class)名称的子句?看起来像是扩展了一个匿名类,但目的是什么?随附的文本没有在任何地方解释甚至提到这个结构。代码实际上可以编译,并且无论是否使用它,都可以完美运行。

OTOH 我在几个网页上发现了完全相同的代码,包括 this (这看起来像本书章节的原始版本)。我怀疑到目前为止,一个错字是否已经在这么多读者的关注之下……所以我错过了什么吗?

我试图用谷歌搜索它,但甚至找不到合适的搜索词。所以有人可以解释这个构造在 Scala 中是否有名称和/或实际用途吗?

最佳答案

对我来说看起来像是打印错误。尽管如此,它仍然可以正常工作,这可能有助于一直隐藏它。

无论如何,该对象正在扩展结构类型,尽管它也可能是早期初始化,如果您有 with XXX在末尾。嗯嗯。它看起来更像是一个没有任何类或特征的早期初始化,实际上……结构类型不包含代码,我认为。

关于scala - Scala 对象定义中没有父类(super class)名称的 "extends {..}"子句有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45103438/

相关文章:

scala - Sqs Akka Stream 内存不足

scala - 从嵌套选项中提取值

html - Play 字符串的 scala 模板语法

带有 __ 的 Python 'hide' 方法

javascript - 扩展 TypeScript Map 以限制数据类型

scala - 未找到 SparkContext 类错误

object - 对象中的 golang bufio

javascript - 在javascript中删除多个对象键值

javascript - 向对象数组添加新属性(根据现有属性值分配特定值)

c# - 抽象类和接口(interface)中可以使用相同的字段名称吗?