快学Scala习题解答—第十二章 高阶函数

高阶函数

编写函数values(fun:(Int)=>Int,low:Int,high:Int),该函数输出一个集合,对应给定区间内给定函数的输入和输出。比如,values(x=>x*x,-5,5)应该产出一个对偶的集合(-5,25),(-4,16),(-3,9),…,(5,25)

1
2
3
4
5
6
7
8
9
10
11
12
object Test extends App {
def values(fun: (Int) => Int, low: Int, high: Int) = {
var arr = List[(Int,Int)]()
low to high foreach {
num =>
arr = (num, fun(num)) :: arr
}
arr
}
println(values(x => x * x, -5, 5).mkString)
}

阅读更多

快学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的使用

阅读更多