【发布时间】:2012-04-13 18:15:42
【问题描述】:
在scala 包对象和Predef 中定义的东西有什么区别?
当包对象不存在时,Predef 只是 2.8 之前的遗留物,还是有其他原因我们需要两者?
【问题讨论】:
在scala 包对象和Predef 中定义的东西有什么区别?
当包对象不存在时,Predef 只是 2.8 之前的遗留物,还是有其他原因我们需要两者?
【问题讨论】:
根据 ScalaDoc,
"
Predef对象提供的定义在所有 没有明确限定的 Scala 编译单元"
因此,它本身不是一个包对象,而是在为“所有 Scala 编译单元”提供功能方面充当一个对象
至于为什么会出现这种情况,我觉得你说得对,貌似是legacy issue
至于为什么会一直存在,可能还会有limitations of package objects阻止PreDef被合并。
【讨论】:
package // to force scala package object to be seen”。必须有一个由编译器提供的“import Predef._”,它为我们提供了如果 Predef 是一个包对象,我们将无法获得的功能。无论如何,我敢打赌 scala-lang 用户组将能够阐明这个问题......