private [foo]适用于任何基于foo的包吗?

时间:2012-10-03 18:14:14

标签: scala scope package

一个远景,但把它放在那里 - 寻找一种基于共同的相对封装范围提供隐私的方法。

因此,例如,有没有办法将private[foo]用于包com.company1.foocom.company2.foo,其中每个包都可以根据其“foo-ness”访问其他foo包“

不太可能,但会很好,在依赖的sbt项目中使用private[model]可以真正从这种相对隐私中受益。

2 个答案:

答案 0 :(得分:2)

你不能这样做。从语言规范(2.9):

  

修改者可以使用标识符C(例如private[C])进行限定   表示包含定义的类或包

所以你可以期待的最好的是一个共同的共同包。对于给出的两个示例com.company1.foocom.company2.foo,限制性最强的共享根为com; private[com]是你能做的最好的事情。

答案 1 :(得分:1)

我不认为这是可能的,因为foo只是任何给定范围内一个特定的完全命名包的别名。

因此,名称以.foo结尾的软件包与其名称中包含字母e的两个软件包没有多少共同之处。