快学Scala习题解答—第十章 特质】的更多相关文章

10 特质 10.1 java.awt.Rectangle类有两个非常实用的方法translate和grow,但可惜的是像java.awt.geom.Ellipse2D这种类没有. 在Scala中,你能够解决掉这个问题.定义一个RenctangleLike特质,增加详细的translate和grow方法. 提供不论什么你须要用来实现的抽象方法,以便你能够像例如以下代码这样混入该特质: val egg = new java.awt.geom.Ellipse2D.Double(5,10,20,30)…
1 简介 近期对Scala比较感兴趣,买了本<快学Scala>,感觉不错.比<Programming Scala:Tackle Multi-Core Complexity on the Java Virtual Machine>好很多. 是本不错的入门书.而且每个章节都设置了难度级别,每章有习题,可以巩固Scala语法. 本文的目的就是针对这些习题进行解答 2 基础  2.1 在Scala REPL中键入3,然后按Tab键.有哪些方法可以被应用? 这个....直接操作一遍就有结果了…
4 映射和元组  4.1 设置一个映射,当中包括你想要的一些装备,以及它们的价格.然后构建还有一个映射.採用同一组键,可是价格上打9折 映射的简单操作  ,"gun"->18,"ipad"->1000)   , gun -> 18, ipad -> 1000)      scala> for((k,v) <- map) yield (k,v * 0.9)   res3: scala.collection.immutable.Map…
5 类  5.1 改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数 class Count{ private var value = Int.MaxValue else value } def current = value } 5.2 编写一个BankAccount类,增加deposit和withdraw方法,和一个仅仅读的balance属性 ){ def deposit(){} def withdraw(){} } 5.3 编写一个Time类,增加仅仅读属性hou…
3 数组相关操作  3.1 编写一段代码.将a设置为一个n个随机整数的数组,要求随机数介于0(包括)和n(不包括)之间  random和yield的使用 import scala.math.random def randomArray(n:Int)={ until n) yield (random * n).toInt } ).mkString(",")) 3.2 编写一个循环,将整数数组中相邻的元素置换.比如,Array(1,2,3,4,5)经过置换后变为Array(2,1,4,3,…
trait的abstract override使用: 当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super.log依旧是个abstract class,所以必须在方法前加上abstract和override.但是并没有具体介绍如何使用,然后查阅了其他文档,才明白使用方法. 下面的代码定义了超类LoggerEmpty,这个定义意味着该特质只能混入扩展LoggerEmpty的类中. 在特质中声明抽象方法中有…
Robert Peng's Blog - https://mr-dai.github.io/ <快学Scala>Intro与第1章 - https://mr-dai.github.io/Scala-for-the-Impatient-1 <快学Scala>第2章(上):控制结构 - https://mr-dai.github.io/Scala-for-the-Impatient-2-1 <快学Scala>第2章(下):函数 - https://mr-dai.github…
引言 OK.时间非常快又过去了一周.第一周有五一假期所以感觉时间绰绰有余,这周中间没有假期仅仅能靠晚上加周末的时间来消化,事实上还是有点紧张呢! 后来发现每堂课的视频还有相应的课件(Slide).字幕(subtitles)能够下载.这样下载视频学习和在线学习就仅仅差课程中间的Exercise了 Week 2主要讲函数,函数在Scala里是first-class citizen,能够在随意域内出现.这门课事实上也是在借Scala来讲函数式编程原理. 好了,不多说.进入习题解析. 这周的作业主要是使…
一个Scala类可以继承多个特质(trait), 特质可能会要求使用它们的类支持某个特定特性, 与Java接口不同, Scala特质可以给出这些特质的缺省实现. 要点如下: Scala中类只能继承一个超类, 可以扩展任意数量的特质 特质可以要求实现它们的类具备特定的字段, 方法和超类 与Java接口不同, Scala特质可以提供方法和字段的实现 当将多个特质叠加使用的时候, 顺序很重要 ---- 排在后面的特质方法先被执行 1. Scala类没有多继承 把毫不相关的类组装在一起, 多继承没有关系…
集合 13.1 集合的三大类 所有的集合都扩展Iterable特质.集合的三大集合为Seq, Set, Map Seq是一个有先后次序的值的序列,比如数组或列表.IndexSeq允许我们通过整型下表快速访问任意元素.但是链表不可以. Set是一组没有先后次序的值.SortedSet中,元素排过序. Map时一组(键,值)对.SortedMap按键排序 每一个Scala集合特质或类都有一个带有apply方法的伴生对象. 13.2 可变和不可变集合 13.3 序列Sequence 不可变序列:Ind…