【问题标题】:Scala package object vs PredefScala 包对象与 Predef
【发布时间】:2012-04-13 18:15:42
【问题描述】:

在scala 包对象和Predef 中定义的东西有什么区别?

当包对象不存在时,Predef 只是 2.8 之前的遗留物,还是有其他原因我们需要两者?

【问题讨论】:

    标签: scala predef


    【解决方案1】:

    根据 ScalaDoc,

    "Predef 对象提供的定义在所有 没有明确限定的 Scala 编译单元"

    因此,它本身不是一个包对象,而是在为“所有 Scala 编译单元”提供功能方面充当一个对象

    至于为什么会出现这种情况,我觉得你说得对,貌似是legacy issue

    至于为什么会一直存在,可能还会有limitations of package objects阻止PreDef被合并。

    【讨论】:

    • 我想知道 Predef 中是否有任何具体示例无法放入 scala 包对象中
    • Predef 可以很好地作为包对象工作,但如果是这样的话,Scala 核心开发人员选择将 Predef 保留为非包对象肯定是有原因的。 Predef 中的一条线索是:“scala.package // to force scala package object to be seen”。必须有一个由编译器提供的“import Predef._”,它为我们提供了如果 Predef 是一个包对象,我们将无法获得的功能。无论如何,我敢打赌 scala-lang 用户组将能够阐明这个问题......
    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2017-01-10
    • 2014-06-12
    • 2017-01-17
    • 2017-04-15
    • 1970-01-01
    相关资源
    最近更新 更多