我在一些库中看过,例如Spray,这样的双包规范:
package cc.spray
package http
// code
这对于cc.spray.http软件包来说只是眼睛糖果,还是像这样打破这两者有什么功能呢?
答案 0 :(得分:8)
这相当于:
package cc.spray.http
import cc.spray._
// implicitly, import cc.spray.http._
即,包cc.spray
和包cc.spray.http
的每个成员都可见。另一方面,包cc
的成员不可见。
通过这种方式,可以安全地在其包层次结构中使用java
这样的名称,而不会造成麻烦,同时,可以轻松地看到要显示的包范围。
答案 1 :(得分:3)
单独的包语句将cc.spray
和cc.spray.http
放在范围内。
答案 2 :(得分:1)
让我们不要忘记从这种方法中获得的一个好胜利
// 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 {
...
}
答案 3 :(得分:0)
与许多其他内容一样,这是在Scala 2.8中引入的:其他答案为您提供了“什么”(将多个包范围暴露给当前上下文)和官方Scala文档具有a lot more detail,以及该功能的详细理由。