如何将 Scala 中的包设为私有?
Posted
技术标签:
【中文标题】如何将 Scala 中的包设为私有?【英文标题】:How do I make a package in Scala private? 【发布时间】:2016-03-23 16:41:19 【问题描述】:如果我在 Scala 中有这样的包层次结构:
package toplevel
package a
// some interesting stuff
package b
// more interesting stuff
package utility
// stuff that should not be accessible from the outside
// and is not logically related to the project,
// basically some helper objects
如何禁止toplevel
包的用户查看或导入包utility
?
我尝试使用private[toplevel] package utility ...
,但收到此错误:expected start of definition
。
我已经搜索过这个并且被误报所淹没:我得到的一切都是关于将事情包私有化,这不是我的问题。
【问题讨论】:
为什么需要那个实用程序包?私有对象不是更适合那里吗? 我需要这个包来放置一些元数据,以简化其他包的开发。这些东西可能应该在一个单独的库中,但我们不想要额外的依赖项。我希望它是一个包,因为它已经包含 6 个对象/类,可能还会有更多。将它们全部放在一个对象中意味着它们必须在同一个文件中,这会变得太混乱。 【参考方案1】:你不能:包没有访问级别。
或者更确切地说,您可以使用OSGi 而不导出它们,但如果您出于其他原因也不需要它,这是一个非常重量级的解决方案。
【讨论】:
【参考方案2】:要达到与 Java 中的私有包相同的目标,您可以使用增强的访问修饰符。在您的包实用程序中,您可以使用 private[utility] 限制访问。这样,包成员仅在包实用程序本身内部可用。
希望对您有所帮助。
【讨论】:
问题是如何使整个包私有,而不是如何使单个类包私有。【参考方案3】: You can only define the enclosing package, within which the code is defined
Answered 在这里。
【讨论】:
问题是如何使整个包私有,而不是如何使单个类包私有。以上是关于如何将 Scala 中的包设为私有?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 setup.py 安装托管在私有 PyPI 中的包?