从Java角度看Scala scala一般要和Java在大型程序中使用,使用Java中的框架。Scala的实现方式是将代码翻译成为标准的Java字节码,Scala的特性尽可能...
从Java角度看Scala scala一般要和Java在大型程序中使用,使用Java中的框架。Scala的实现方式是将代码翻译成为标准的Java字节码,Scala的特性尽可能...
Scala中的相等性 Scala的相等性比较和Java中的不同,在Java中使用==表示两个对象的引用相等性,使用equals表示自然意义的相等性。在Scala中使用eq表示...
Scala中允许你使用package将程序分为小的部分,每一个小的部分叫做一个模块,package无法表示抽象,也不能被继承。而且在程序中只能有一种配置。 随着程序规模的增大...
半结构化数据 XML是一种半结构化数据,既不是纯文本数据也不是编程中使用到的数据结构。在保存数据到文件中或对文件进行网络传输的时候非常有用,将数据转换为半结构数据,然后使用库...
注解是添加到程序源代码中的结构化信息,可以出现在变量,方法,表达式或者其他元素上,和注释不同,注解是由结构的,更易于被机器处理。 注解的存在意义 编写程序在编译和运行之外还有...
到目前为止所使用的模式匹配的拆解和匹配都建立在case class的基础上,如果要创建自己的模式而不定义case class,提取器提供了一种实现手段。 提取器 在Scala...
不同的集合支持实现支持相同的操作,如果在每个集合里面进行单独的实现,会出现大量的代码并且不利于保持集合操作的一致性。新的集合框架主要设计目标就是避免重复,在尽量少的地方定义,...
可变和不可变集合 Scala中的集合可分为可变集合和不可变集合。可变集合可以当场被更新,不可变集合本身是不可变的。 所有的集合类都可以在scala.collection或者其...
for表达式 for表达式一般是for ( seq ) yield expr,seq是一个序列,包含有生成器、定义和过滤器,它们用分号隔开。for {p <- persons...
List类的原理 List算是Scala中最常用的结构。是一个抽象类,有子类::和Nil组成,List的类型参数是协变的,列表的所有操作都可以通过以下三种操作进行定义:def...
隐式转换和隐式参数 如果使用别人的代码库,无法进行修改,Scala进行扩展的方法是隐式转换和隐式参数。允许省略掉冗余且明显的细节。 隐式转换 隐式转换通常在两个开发完全不知道...
如果类或者特质的某个成员在当前类中没有完成的定义,则这个成员就是抽象的。抽象成员的本意是强制子类进行实现。Scala相对Java泛化了抽象字段的意义,存在四种抽象成员,val...
类型参数化允许设计泛型的类和特质。在Scala中必须确定类型参数,型变定义了参数化类型的继承关系,例如List[String]是List[Any]的子类。 信息隐藏 私有构造...
可变对象 可变对象的状态会随着时间而发生改变,与在类中有没有定义var并没有直接关联,有可能定义了var但只赋值了一次,操作的时候每次对该值的访问也是不变的。 可被重新赋值的...
序列 列表 最重要的序列类型是List类,支持在头部快速添加和移除条目,不支持随机访问。快速的头部添加和移除意味模式匹配很顺畅。 数组 数组中保存了一个序列的元素。并使用从0...
列表 不同于数组,列表的元素是不能改变的,列表是链表。 同一个列表的所有元素都必须是相同类型的。元素类型为T的列表类型为List[T]。注意T可能是Any这样的父类。Scal...
样例类是Scala对对象进行模式匹配而不需要大量样板代码的方式,对希望做模式匹配的类加上关键字case即可。在Scala中如果类的定义体是空时,可以省去定义体的花括号。 样例...
查看软件是否符合预期的两个主要工具为断言和测试。 断言 主要是对assert函数的调用,可以直接放入一个condition,或者是assert(condition,expla...
在大程序中,减少耦合是很重要的,耦合是指程序不同部分依赖其他部分的程度。低耦合能够减少局部修改对其它部分造成的影响。方法就是以模块化的风格来书写代码。本章就是利用包和引入来进...
特质是代码复用的基础代码单元。每个特质都可以描述整个概念的一小块,最后可以通过特质混入,将这些小概念组合起来。 特质将方法和字段定义封装起来,将它们通过混入mix in的方法...