快學Scala習題解答—第六章 物件
阿新 • • 發佈:2018-12-25
6 物件
6.1 編寫一個Conversions物件,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法
Scala程式碼
6.2 前一個練習不是很面向物件。提供一個通用的超類UnitConversion並定義擴充套件該超類的InchesToCentimeters,GallonsToLiters和MilesToKilometers物件
Scala程式碼
6.3 定義一個擴充套件自java.awt.Point的Origin物件。為什麼說這實際上不是個好主意?(仔細看Point類的方法)
Point中的getLocation方法返回的是Point物件,如果想返回Origin物件,需要Origin類才行
Scala程式碼
6.4 定義一個Point類和一個伴生物件,使得我們可以不用new而直接用Point(3,4)來構造Point例項
apply方法的使用
Scala程式碼
6.5 編寫一個Scala應用程式,使用App特質,以反序列印命令列引數,用空格隔開。舉例來說,scala Reverse Hello World應該列印World Hello
Scala程式碼
6.6 編寫一個撲克牌4種花色的列舉,讓其toString方法分別返回♣,♦,♥,♠
Scala程式碼
6.7 實現一個函式,檢查某張牌的花色是否為紅色
Scala程式碼
6.8 編寫一個列舉,描述RGB立方體的8個角。ID使用顏色值(例如:紅色是0xff0000)
Scala程式碼
6.1 編寫一個Conversions物件,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法
Scala程式碼
- object Conversions{
- def inchesToCentimeters(){}
- def gallonsToLiters(){}
- def milesToKilometers(){}
- }
6.2 前一個練習不是很面向物件。提供一個通用的超類UnitConversion並定義擴充套件該超類的InchesToCentimeters,GallonsToLiters和MilesToKilometers物件
Scala程式碼
- abstract class UnitConversion{
- def inchesToCentimeters(){}
- def gallonsToLiters(){}
- def milesToKilometers(){}
- }
- object InchesToCentimeters extends UnitConversion{
- override def inchesToCentimeters() {}
- }
- object GallonsToLiters extends UnitConversion{
-
override def gallonsToLiters() {}
- }
- object MilesToKilometers extends UnitConversion{
- override def milesToKilometers() {}
- }
6.3 定義一個擴充套件自java.awt.Point的Origin物件。為什麼說這實際上不是個好主意?(仔細看Point類的方法)
Point中的getLocation方法返回的是Point物件,如果想返回Origin物件,需要Origin類才行
Scala程式碼
- object Origin extends Point with App{
-
override def getLocation: Point = super.getLocation
- Origin.move(2,3)
- println(Origin.toString)
- }
6.4 定義一個Point類和一個伴生物件,使得我們可以不用new而直接用Point(3,4)來構造Point例項
apply方法的使用
Scala程式碼
- class Point(x:Int,y:Int){
- override def toString: String = "x = " + x + " y = " + y
- }
- object Point extends App{
- def apply(x:Int,y:Int)={
- new Point(x,y)
- }
- val p = Point(1,2)
- println(p)
- }
6.5 編寫一個Scala應用程式,使用App特質,以反序列印命令列引數,用空格隔開。舉例來說,scala Reverse Hello World應該列印World Hello
Scala程式碼
- object Reverse extends App{
- args.reverse.foreach(arg => print(arg + " "))
- }
6.6 編寫一個撲克牌4種花色的列舉,讓其toString方法分別返回♣,♦,♥,♠
Scala程式碼
- object Card extends Enumeration with App{
- val M = Value("♣")
- val T = Value("♠")
- val H = Value("♥")
- val F = Value("♦")
- println(Card.M)
- println(Card.T)
- println(Card.H)
- println(Card.F)
- }
6.7 實現一個函式,檢查某張牌的花色是否為紅色
Scala程式碼
- object Card extends Enumeration with App{
- val M = Value("♣")
- val T = Value("♠")
- val H = Value("♥")
- val F = Value("♦")
- def color(c:Card.Value){
- if(c == Card.M || c == Card.T) print("Black")
- else print("Red")
- }
- color(Card.H)
- }
6.8 編寫一個列舉,描述RGB立方體的8個角。ID使用顏色值(例如:紅色是0xff0000)
Scala程式碼
- object RGB extends Enumeration with App{
- val RED = Value(0xff0000,"Red")
- val BLACK = Value(0x000000,"Black")
- val GREEN = Value(0x00ff00,"Green")
- val CYAN = Value(0x00ffff,"Cyan")
- val YELLOW = Value(0xffff00,"Yellow")
- val WHITE = Value(0xffffff,"White")
- val BLUE = Value(0x0000ff,"Blue")
- val MAGENTA = Value(0xff00ff,"Magenta")
- }