速くScalaの第6章の練習問題の解答を学びます

6388 ワード

6.1 Conversionsオブジェクトを作成し、inchesToCentimeters、gallonsToLiters、milesToKilometersメソッドを追加
object Conversions{
  def inchesToCentermeters()={
  }

  def gallonsToLiters()={
  }

  def milesToKilometers()={
  }
}

6.2前の練習はあまり相手に向いていない.汎用スーパークラスUnitConversionを提供し、スーパークラスを拡張するInchesToCentimeters、GallonsToLiters、MilesToKilometersオブジェクトを定義します.
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クラスのgetLocationメソッドはPointオブジェクトを返し、Originオブジェクトを返すにはOriginクラスが必要です.
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インスタンスを構築できるようにします.
class Point(x:Int,y:Int){
  override def toString()={
    "(" + x.toString + " , " + y.toString + ")"
  }
}
object Point{
  def apply(x:Int,y:Int) ={
    new Point(x,y)
  }
}

6.5コマンドラインパラメータを逆順序で印刷し、スペースで区切るScalaアプリケーションを作成します.たとえば、scala Reverse Hello WorldはWorld Helloを印刷する必要があります.
object Reverse extends App{
  args.reverse.foreach(arg => print(arg + " "))
}

6.6トランプの4種類の花色の列挙を作成し、そのtoString方法をそれぞれ4種類の花色に戻す.
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       ,             。

  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は色値(例えば、赤は0 xff 0000)を用いる.
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 MAGENTA = Value(0xff0000,"Magenta")

}