3

一个很长的镜头,但把它放在那里——寻找一种基于通用相对包范围提供隐私的方法。

因此,例如,有没有一种方法可以private[foo]用于包com.company1.foo,并且com.company2.foo每个包都可以根据它们的“foo-ness”访问另一个 foo 包

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

4

2 回答 2

2

你不可以做这个。从语言规范(2.9):

修饰符可以用一个标识符来限定C(例如private[C]),它必须表示一个包含定义的类或包

因此,您可以期望的最好的结果是共享的通用包。对于给定的两个示例,com.company1.foocom.company2.foo最严格的共享根是com; private[com]将是你能做的最好的。

于 2012-10-03T18:31:55.230 回答
1

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

因此,对于名称以 结尾的包来说,与名称中.foo包含字母的两个包相比,没有更多的共同点e

于 2012-10-03T18:30:52.297 回答