7

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

package cc.spray
package http

// code

这只是 cc.spray.http 包的养眼,还是像这样将两者分开是否有功能上的好处?

4

4 回答 4

8

这相当于:

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

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

通过这种方式,人们可以安全地java在其包层次结构中使用名称,而不会造成麻烦,同时,可以轻松地使希望可见的包范围可见。

于 2012-06-15T21:47:42.403 回答
3

单独的包语句将两者都cc.spray放在cc.spray.http范围内。

于 2012-06-15T21:24:08.510 回答
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 {
  ...
}
于 2012-06-17T08:20:30.713 回答
0

与许多其他事情一样,这是在 Scala 2.8 中引入的:其他答案为您提供“什么”(将多个包范围暴露给当前上下文),官方 Scala 文档有更多详细信息,以及详细的理由该功能。

于 2012-06-16T13:24:48.683 回答