Scala中的双包语句

时间:2012-06-15 21:15:15

标签: scala package

我在一些库中看过,例如Spray,这样的双包规范:

package cc.spray
package http

// code

这对于cc.spray.http软件包来说只是眼睛糖果,还是像这样打破这两者有什么功能呢?

4 个答案:

答案 0 :(得分:8)

这相当于:

package cc.spray.http
import cc.spray._
// implicitly, import cc.spray.http._

即,包cc.spray和包cc.spray.http的每个成员都可见。另一方面,包cc的成员可见。

通过这种方式,可以安全地在其包层次结构中使用java这样的名称,而不会造成麻烦,同时,可以轻松地看到要显示的包范围。

答案 1 :(得分:3)

单独的包语句将cc.spraycc.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,以及该功能的详细理由。