我在一些库中看到过,例如 Spray,双包规范是这样的:
package cc.spray
package http
// code
这只是 cc.spray.http 包的养眼,还是像这样将两者分开是否有功能上的好处?
这相当于:
package cc.spray.http
import cc.spray._
// implicitly, import cc.spray.http._
也就是说,包cc.spray
和包的每个成员cc.spray.http
都是可见的。另一方面,包的成员cc
是不可见的。
通过这种方式,人们可以安全地java
在其包层次结构中使用名称,而不会造成麻烦,同时,可以轻松地使希望可见的包范围可见。
单独的包语句将两者都cc.spray
放在cc.spray.http
范围内。
我们不要忘记从这种方法中获得的一次不错的胜利
// Foo.scala
package cc.spray
package http
class Foo {
...
}
// Bar.Scala
package cc.spray
package bar
import http._ // concise imports relative to cc.spray
class Bar {
...
}
与许多其他事情一样,这是在 Scala 2.8 中引入的:其他答案为您提供“什么”(将多个包范围暴露给当前上下文),官方 Scala 文档有更多详细信息,以及详细的理由该功能。