2016-02-18 62 views
0

我目前在閱讀「Scala編程,第二版」。 (OReilly 2015)由Wampler/Payne提供,他們提到Package Objects作爲暴露抽象的手段。斯卡拉庫API暴露(和包保護)

在p.504但是,他們提到

包對象
到細粒度的可視性控制另外一個辦法是把所有的實現結構在受保護的包,然後使用一個頂層包對象暴露只有適當的公共抽象。例如,鍵入成員可以別名,否則將被隱藏類型[...]」

現在我的問題是:有沒有辦法來聲明說:保護的包爲受保護的一次,而無需將它聲明爲每家每戶類/對象下層次結構如果是這樣,怎麼
還是我只是誤解了作者

由於澄清:???我目前工作的這是應該暴露最小的API,以便圖書館$同事必須實際接觸內部進行根本性更改,或者必須通過配置文件進行配置。
第二個問題:這是正確的道路嗎?我應該去另一條路線嗎?

回答

0

對我自己做一點研究,在我看來,在Scala中不可能聲明一個包是完全私有的。 (您可以檢查出的語言規範here,那裏是能夠有資格與「私有」或者類似的一個包聲明沒有提及)

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

而不是使用細粒度控制,如宣稱一些類成員的私人或受保護的,而保留其餘衆,你可以把所有的重要的類在你的包完全私有的(在private class/trait/object P {...})。然後,您可以將API的重要公共詳細信息放入包對象中,從而暴露這些私有內部。例如,如果需要公開受保護的類型,則可以使用類型別名...