scala:包和源目录层次结构之间的关系



源文件中声明的包是否必须与目录层次结构匹配?例如,在源文件a/b/c/foo.scala中,包必须是a.b.c?如果是这样,为什么还要在源文件中重复?如果不是,由于源文件可以声明它所属的任何包,那么目录层次结构的用途是什么?

对于源文件中可能包含的内容,是否有一些限制?例如,foo.scala是否可以包含公共class foo,而其他类或函数必须是私有的或只能访问包?

这不是一个要求,但它是通常的行为。文件A/b/c/foo.scala可以是包x.y.z。我想你可以说目录管理你存储代码的方式,包管理你公开代码的方式。

源文件中的内容没有任何限制(这与Java不同)。例如,foo.scala可以包含公共类bar、foo或两者。

最新更新