“模块化”Scala指南
最近我很困惑如何组织我的
Scala代码,因为有很多选择.
Scala有什么指导如何/何时使用包,对象,包对象来组织代码? 解决方法
了解Scala的功能
首先,我们需要了解每个模块化策略的功能和限制. 包 这些工作就像在Java中一样.您可以使用许多文件来声明一个包的不同部分,您可以将许多级别深入.这为您的布局提供了最大的灵活性.然而,由于默认的类加载器希望只能在包中查找类和接口,所以Scala可以让你放在那里. (类,特征和对象.) 对象 对象可以包含任何东西 – 方法,字段,其他对象,类,特征等.子类,特征和对象实际上是它们自己的独立实体,其中包含对象作为名称标记的前缀(就JVM而言) ).一个对象必须完全包含在一个文件中,尽管你可以任意深入地嵌套子类,但是它可以通过改变更长的名字而不是添加到类加载器的路径. 包对象 只有拥有对象和包的问题是您可能需要一个嵌套结构: scala.xml scala.xml.include scala.xml.include.sax 所以你需要使用包(以避免有一个巨大的文件和令人不安的长类名).但你也可能想要 import scala.xml._ 使各种常量和隐式转换可用于您,以便您需要使用对象. Package objects来抢救;它们与普通物体基本相同,但是当你说 import scala.xml._ 你可以获得包中的所有内容(scala.xml._),也可以包含相应包对象(scala.xml.package)中的所有内容. 如何模块化你的代码 现在我们知道每个部分的工作原理,如何组织有相当明显的规则: >将相关代码放入包中>如果有很多相关的子部件,将它们放入子包中>如果一个包需要implicits或者常量,把它们放到该包的package对象中>如果您有一个包层次结构的终端分支,您可以选择它是应该是一个对象还是一个包对象.有一些东西,包对象不允许做(尽管列表越来越小 – 我不知道有什么留下,除了禁止遮蔽包中的其他名称),所以一个常规的对象可能成为一个更好的选择.只要你不担心二进制兼容性,以后很容易改变主意 – 在大多数情况下,只需将对象更改为包对象即可. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |