《快学Scala》第6章 对象 练习
生活随笔
收集整理的這篇文章主要介紹了
《快学Scala》第6章 对象 练习
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 編寫一個Conversions對象,加入inchesToCentimeters、gallonsToLiters和milesToKilometers方法。
/*** Created by Ibuki Suika on 2014/5/26.*/object Conversions {def inchesToCentimeters(v: Double) = {v * 2.54}def gallonsToLiters(v: Double) = {3.78541178 * v}def milesToKilometers(v: Double) = {1.609344 * v}
}object ScalaApp {def main(args: Array[String]) {println(Conversions.gallonsToLiters(10))println(Conversions.inchesToCentimeters(2))println(Conversions.milesToKilometers(1))}
}
2. 前一個練習不是很面向對象,提供一個通用的超類UnitConversion并定義擴展該超類的InchesToCentimeters、GallonsToLiters和MilesToKilometers對象。
/*** Created by Ibuki Suika on 2014/5/26.*/abstract class UnitConversion {def convert(v: Double): Double }object InchesToCentimeters extends UnitConversion {override def convert(v: Double) = {v * 2.54} }object GallonsToLiters extends UnitConversion {override def convert(v: Double) = {v * 3.78541178} }object MilesToKilometers extends UnitConversion {override def convert(v: Double) = {v * 1.609344} }object ScalaApp {def main(args: Array[String]) {println(GallonsToLiters.convert(10))println(InchesToCentimeters.convert(2))println(MilesToKilometers.convert(1))} } 3. 定義一個擴展自java.awt.Point的Origin對象。為什么說這實際上不是個好主意?(仔細看Point類的方法) /*** Created by Ibuki Suika on 2014/5/26.*/object Origin extends java.awt.Point {def apply() = new java.awt.Point() }object ScalaApp {def main(args: Array[String]) {println(Origin())} } 4. 定義一個Point類和一個伴生對象,使得我們可以不用new而直接用Point(3,4)來構造Point實例。 /*** Created by Ibuki Suika on 2014/5/26.*/class Point(val x: Int, val y: Int) {}object Point {def apply(x: Int, y: Int) = {new Point(x, y)} }object ScalaApp {def main(args: Array[String]) {val p = Point(3, 4)println(p.x)println(p.y)} } 5. 編寫一個Scala應用程序,使用App特質,以反序打印命令行參數,用空格隔開。 /*** Created by Ibuki Suika on 2014/5/26.*/object ScalaApp extends App{println(args.reverse.mkString(" ")) } 6. 編寫一個撲克牌4種花色的枚舉,讓其toString方法分別返回?、?、?和?。 /*** Created by Ibuki Suika on 2014/5/26.*/object PlayingCard extends Enumeration {val Club = Value(0, "?")val Diomand = Value(1, "?")val Heart = Value(2, "?")val Spade = Value(3, "?") }object ScalaApp {def main(args: Array[String]) {for (c <- PlayingCard.values) {println(c.toString)}} } 7. 編寫一個函數,檢查某張牌的花色是否為紅色。 /*** Created by Ibuki Suika on 2014/5/26.*/object PlayingCard extends Enumeration {val Club = Value(0, "?")val Diomand = Value(1, "?")val Heart = Value(2, "?")val Spade = Value(3, "?")def isHeart(v: PlayingCard.Value) = {v == Heart} }object ScalaApp {def main(args: Array[String]) {for (c <- PlayingCard.values) {println(PlayingCard.isHeart(c))}} } 8. 編寫一個枚舉,描述RGB立方體的8個角。ID使用顏色值(例如,紅色是0xff0000)。 /*** Created by Ibuki Suika on 2014/5/26.*/object RGBCube extends Enumeration {val R = Value(0xff0000)val G = Value(0x00ff00)val B = Value(0x0000ff)val RG = Value(0xffff00)val RB = Value(0xff00ff)val GB = Value(0x00ffff)val RGB = Value(0xffffff)val BLACK = Value(0x000000) }object ScalaApp {def main(args: Array[String]) {for (c <- RGBCube.values) {printf("#%06x\n", c.id)}} }總結
以上是生活随笔為你收集整理的《快学Scala》第6章 对象 练习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 接口开发指的是什么_企业在什么情况下要选
- 下一篇: 通信网理论基础