Scala

时间:2016-02-18 04:35:10

标签: scala jvm

我正在阅读" Scala编程,第2版。" (OReilly 2015)Wampler / Payne,他们提到Package Objects作为揭示抽象的手段。

但是,在第504页,他们提到了

  

包装对象
  细粒度可见性控件的替代方法是将所有实现构造放在受保护的包中,然后使用顶级包对象仅公开适当的公共抽象。例如,类型成员可以别名隐藏[...]"

的类型

现在我的问题是:有没有办法将所述受保护的包声明为受保护的一次,而不必为层次结构中的每个类/对象声明它?如果是这样,怎么样? 或者我只是误解作者?

作为澄清:我目前正在开发一个库,该库应该公开最小的API,以便$同事必须实际触摸内部进行基本更改或必须通过配置文件进行配置。
第二个问题:这是正确的道路吗?我应该走另一条路吗?

1 个答案:

答案 0 :(得分:0)

对我自己进行一些研究,在我看来,在Scala中不可能声明一个包完全是私有的。 (您可以查看语言规范here,其中没有提及能够使用“私人”或类似方式对包裹声明进行限定

我认为作者的建议如下,粗略翻译:

  

您可以将包中的所有重要类完全保密,而不是使用细粒度控件,例如将类成员的某些声明为私有或受保护并将其余部分保持公开,而不是{ {1}})。然后,您可以将API的重要公共详细信息放入包对象中,从而暴露这些私有内部。例如,如果需要公开受保护的类型,则可以使用类型别名...