快学scala第六章习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7 对象
编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法Scala代码
1.object Conversions{
2.def inchesToCentimeters(){}
3.def gallonsToLiters(){}
4.def milesToKilometers(){}
5.}
前一个练习不是很面向对象。提供一个通用的超类UnitConversion并定义扩展该超类的InchesToCentimeters,GallonsToLiters和MilesToKilometers对象
Scala代码
1.abstract class UnitConversion{
2.
3.def inchesToCentimeters(){}
4.def gallonsToLiters(){}
5.def milesToKilometers(){}
6.
7.}
8.
9.object InchesToCentimeters extends UnitConversion{
10.override def inchesToCentimeters() {}
11.}
12.
13.object GallonsToLiters extends UnitConversion{
14.override def gallonsToLiters() {}
15.}
16.
17.object MilesToKilometers extends UnitConversion{
18.override def milesToKilometers() {}
19.}
定义一个扩展自的Origin对象。为什么说这实际上不是个好主意(仔细看Point类的方法)
Point中的getLocation方法返回的是Point对象,如果想返回Origin对象,需要Origin类才行
Scala代码
1.object Origin extends Point with App{
2.
3.override def getLocation: Point =
4.
5.(2,3)
6.println
7.
8.}
定义一个Point类和一个伴生对象,使得我们可以不用new而直接用Point(3,4)来构造Point实例
apply方法的使用
Scala代码
1.class Point(x:Int,y:Int){
2.override def toString: String = "x = "+ x + " y = "+ y
3.}
4.
5.object Point extends App{
6.def apply(x:Int,y:Int)={
7.new Point(x,y)
8.}
9.
10.val p = Point(1,2)
11.println(p)
12.}
编写一个Scala应用程序,使用App特质,以反序打印命令行参数,用空格隔开。举例来说,scala Reverse Hello World应该打印World Hello
Scala代码
1.object Reverse extends App{
2.=> print(arg + " "))
3.}
编写一个扑克牌4种花色的枚举,让其toString方法分别返回♣,♦,♥,♠
Scala代码
1.object Card extends Enumeration with App{
2.val M = Value("♣")
3.val T = Value("♠")
4.val H = Value("♥")
5.val F = Value("♦")
6.
7.println
8.println
9.println
10.println
11.}
实现一个函数,检查某张牌的花色是否为红色
Scala代码
1.object Card extends Enumeration with App{
2.val M = Value("♣")
3.val T = Value("♠")
4.val H = Value("♥")
5.val F = Value("♦")
6.
7.def color(c:{
8.if(c == || c == print("Black")
9.else print("Red")
10.}
11.
12.color
13.}
编写一个枚举,描述RGB立方体的8个角。ID使用颜色值(例如:红色是0xff0000) Scala代码
1.object RGB extends Enumeration with App{
2.val RED = Value(0xff0000,"Red")
3.val BLACK = Value(0x000000,"Black")
4.val GREEN = Value(0x00ff00,"Green")
5.val CYAN = Value(0x00ffff,"Cyan")
6.val YELLOW = Value(0xffff00,"Yellow")
7.val WHITE = Value(0xffffff,"White")
8.val BLUE = Value(0x0000ff,"Blue")
9.val MAGENTA = Value(0xff00ff,"Magenta")
10.}