开发者

Multiple packages definition

开发者 https://www.devze.com 2023-01-12 09:02 出处:网络
While browsing the source code of the Scala API, I met this package definition in scala/tags/R_2_8_0_final/src/library/scala/util/parsing/combinator/syntactical/St开发者_开发问答dTokenParsers.scala:

While browsing the source code of the Scala API, I met this package definition in scala/tags/R_2_8_0_final/src/library/scala/util/parsing/combinator/syntactical/St开发者_开发问答dTokenParsers.scala:

package scala.util.parsing
package combinator
package syntactical

What does that mean? That the class will be available in more than one package?


This is basically the same as

package scala.util.parsing.combinator.syntactical

import scala.util.parsing._
import scala.util.parsing.combinator._

...

So by "stacking" the packages the way you wrote you can get super-packages in scope. See also these answers.

[Update] Here is a new article written by Martin Odersky about this topic: http://www.artima.com/scalazine/articles/chained_package_clauses_in_scala.html


The Scala reference mentions (chapter 9, section 9.1):

A compilation unit consists of a sequence of packagings, import clauses, and class and object definitions, which may be preceded by a package clause.

A compilation unit

package p1;
...
package pn;
stats

starting with one or more package clauses is equivalent to a compilation unit consisting of the packaging

package p1 { ...
  package pn {
   stats
  } ...
}

See also Organizing Code in Files and Namespaces on nested packages.
(From Programming Scala: Scalability = Functional Programming + Objects By Dean Wampler, Alex Payne, page 44, Chapter 2)

0

精彩评论

暂无评论...
验证码 换一张
取 消