速くScalaの第6章の練習問題の解答を学びます
6388 ワード
6.1 Conversionsオブジェクトを作成し、inchesToCentimeters、gallonsToLiters、milesToKilometersメソッドを追加
6.2前の練習はあまり相手に向いていない.汎用スーパークラスUnitConversionを提供し、スーパークラスを拡張するInchesToCentimeters、GallonsToLiters、MilesToKilometersオブジェクトを定義します.
6.3 javaから拡張子を定義する.awt.PointのOriginオブジェクト.どうしてこれは実際にいい考えではないと言ったのですか.(ポイント類の作り方をよく見る)
PointクラスのgetLocationメソッドはPointオブジェクトを返し、Originオブジェクトを返すにはOriginクラスが必要です.
6.4 Pointクラスと伴生オブジェクトを定義し、newを使用せずに直接Point(3,4)でPointインスタンスを構築できるようにします.
6.5コマンドラインパラメータを逆順序で印刷し、スペースで区切るScalaアプリケーションを作成します.たとえば、scala Reverse Hello WorldはWorld Helloを印刷する必要があります.
6.6トランプの4種類の花色の列挙を作成し、そのtoString方法をそれぞれ4種類の花色に戻す.
6.8 RGB立方体の8つの角を記述する列挙を記述する.
IDは色値(例えば、赤は0 xff 0000)を用いる.
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")
}