Multiple packages definition

后端 未结 2 1642
谎友^
谎友^ 2020-12-14 05:45

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/StdTokenPars

相关标签:
2条回答
  • 2020-12-14 06:24

    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 讨论(0)
  • 2020-12-14 06:28

    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

    0 讨论(0)
提交回复
热议问题