7 对象 7.1 编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法
Scala代码
1. object Conversions{
2. def inchesToCentimeters(){}
3. def gallonsToLiters(){}
4. def milesToKilometers(){}
5. }
7.2 前一个练习不是很面向对象。提供一个通用的超类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. }
7.3定义一个扩展自java.awt.Point的Origin对象。为什么说这实际上不是个好主意?(仔细看Point类的方法) Point中的getLocation方法返回的是Point对象,如果想返回Origin对象,需要Origin类才行
Scala代码
1. object Origin extends Point with App{
2.
3. override def getLocation: Point = super.getLocation
4.
5. Origin.move(2,3)
6. println(Origin.toString)
7.
8. }
7.4 定义一个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. }
7.5 编写一个Scala应用程序,使用App特质,以反序打印命令行参数,用空格隔开。举例来说,scala Reverse Hello World应该打印World Hello
Scala代码
1. object Reverse extends App{
2. args.reverse.foreach(arg => print(arg + " "))
3. }
7.6 编写一个扑克牌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(Card.M)
8. println(Card.T)
9. println(Card.H)
10. println(Card.F)
11. }
7.7 实现一个函数,检查某张牌的花色是否为红色
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:Card.Value){
8. if(c == Card.M || c == Card.T) print("Black")
9. else print("Red")
10. }
11.
12. color(Card.H)
13. }
7.8编写一个枚举,描述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. }