2016-02-18 25 views
0

我目前在阅读“Scala编程,第二版”。 (OReilly 2015)由Wampler/Payne提供,他们提到Package Objects作为暴露抽象的手段。斯卡拉库API暴露(和包保护)

在p.504但是,他们提到

包对象
到细粒度的可视性控制另外一个办法是把所有的实现结构在受保护的包,然后使用一个顶层包对象暴露只有适当的公共抽象。例如,键入成员可以别名,否则将被隐藏类型[...]”

现在我的问题是:有没有办法来声明说:保护的包为受保护的一次,而无需将它声明为每家每户类/对象下层次结构如果是这样,怎么
还是我只是误解了作者

由于澄清:???我目前工作的这是应该暴露最小的API,以便图书馆$同事必须实际接触内部进行根本性更改,或者必须通过配置文件进行配置。
第二个问题:这是正确的道路吗?我应该去另一条路线吗?

回答

0

对我自己做一点研究,在我看来,在Scala中不可能声明一个包是完全私有的。 (您可以检查出的语言规范here,那里是能够有资格与“私有”或者类似的一个包声明没有提及)

我想,作者所提出的建议如下,大致翻译:

而不是使用细粒度控制,如宣称一些类成员的私人或受保护的,而保留其余众,你可以把所有的重要的类在你的包完全私有的(在private class/trait/object P {...})。然后,您可以将API的重要公共详细信息放入包对象中,从而暴露这些私有内部。例如,如果需要公开受保护的类型,则可以使用类型别名...