快学Scala习题解答—第十一章 操作符

操作符

根据优先级规则,3 + 4 -> 5和3 -> 4 + 5是如何被求值的?

在REPL中执行即可得到结果。都是从左至右执行

阅读更多

快学Scala习题解答—第十章 特质

特质

java.awt.Rectangle类有两个很有用的方法translate和grow,但可惜的是像java.awt.geom.Ellipse2D这样的类没有。在Scala中,你可以解决掉这个问题。定义一个RenctangleLike特质,加入具体的translate和grow方法。提供任何你需要用来实现的抽象方法,以便你可以像如下代码这样混入该特质:

1
2
3
val egg = new java.awt.geom.Ellipse2D.Double(5,10,20,30) with RectangleLike
egg.translate(10,-10)
egg.grow(10,20)

阅读更多

快学Scala习题解答—第九章 文件和正则表达式

文件和正则表达式

编写一小段Scala代码,将某个文件中的行倒转顺序(将最后一行作为第一行,依此类推)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import io.Source
import java.io.PrintWriter
val path = "test.txt"
val reader = Source.fromFile(path).getLines()
val result = reader.toArray.reverse
val pw = new PrintWriter(path)
result.foreach(line => pw.write(line + "\n"))
pw.close()

阅读更多

快学Scala习题解答—第八章 继承

继承

扩展如下的BankAccount类,新类CheckingAccount对每次存款和取款都收取1美元的手续费

1
2
3
4
5
class BankAccount(initialBalance:Double){
private var balance = initialBalance
def deposit(amount:Double) = { balance += amount; balance}
def withdraw(amount:Double) = {balance -= amount; balance}
}

阅读更多

快学Scala习题解答—第七章 包和引入

包和引入

编写示例程序,展示为什么

1
package com.horstmann.impatient

阅读更多

快学Scala习题解答—第六章 对象

对象

编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法

1
2
3
4
5
object Conversions{
def inchesToCentimeters(){}
def gallonsToLiters(){}
def milesToKilometers(){}
}

阅读更多

快学Scala习题解答—第五章 类

改进5.1节的Counter类,让它不要在Int.MaxValue时变成负数

加个判断就OK了

阅读更多

快学Scala习题解答—第四章 映射和元组

映射和元组

设置一个映射,其中包含你想要的一些装备,以及它们的价格。然后构建另一个映射,采用同一组键,但是价格上打9折

映射的简单操作

阅读更多

快学Scala习题解答—第三章 数组相关操作

数组相关操作

编写一段代码,将a设置为一个n个随机整数的数组,要求随机数介于0(包含)和n(不包含)之间

random和yield的使用

阅读更多

快学Scala习题解答—第二章 控制结构和函数

控制结构和函数

一个数字如果为正数,则它的signum为1;如果是负数,则signum为-1;如果为0,则signum为0.编写一个函数来计算这个值

简单的逻辑判断

阅读更多