《快学scala》习题解答----第六章对象

  1. 编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法
object Conversions{
  def inchesToCentimeters(value:Double):Double = value * 30.48
  def gallonsToLiters(value:Double):Double = value * 3.785
  def MilesToKilometers(value:Double):Double = value * 1.6
}
  1. 前一个练习不是很面向对象。提供一个通用的超类UnitConversion并定义扩展该超类的InchesToCentimeters,GallonsToLiters和MilesToKilometers对象
class UnitConversion{
  def inchesToCentimeters(value:Double):Double={value}
  def gallonsToLiters(value:Double):Double={value}
  def MilesToKilometers(value:Double):Double={value}
}
object InchesToCentimeters  extends UnitConversion{
  override def inchesToCentimeters(value: Double):Double = value * 30.48
}
object GallonsToLiters   extends UnitConversion{
  override def gallonsToLiters(value: Double):Double = value * 3.785
}
object MilesToKilometers  extends UnitConversion{
  override def gallonsToLiters(value: Double):Double = value * 1.6
}

3 定义一个扩展自java.awt.Point的Origin对象。为什么说这实际上不是个好主意?(仔细看Point类的方法)
Point中的getLocation方法返回的是Point对象,如果想返回Origin对象,需要Origin类才行

object Origin extends java.awt.Point{
  override def getLocation: Point = super.getLocation
  Origin.move(2,3)
  println(Origin.toString)
}
  1. 定义一个Point类和一个伴生对象,使得我们可以不用new而直接用Point(3,4)来构造Point实例
class Point(x:Double,y:Double){
  override def toString: String = "x="+x+",y="+y
}
object Point{
  def apply(x: Double, y: Double): Point = new Point(x, y)
}

5 编写一个Scala应用程序,使用App特质,以反序打印命令行参数,用空格隔开。举例来说,scala Reverse Hello World应该打印World Hello

object Exercise05 extends App{
  println(args.reverse.mkString(" "))
}
  1. 编写一个扑克牌4种花色的枚举,让其toString方法分别返回♣,♦,♥,♠
object Puke extends Enumeration{
  type Puke = Value
  val meihua = Value("♣")
  val fangpian = Value("♦")
  val hongtao = Value("♥")
  val heitao = Value("♠")
}
  1. 实现一个函数,检查某张牌的花色是否为红色
def isRed(pai:Puke.Value): Boolean ={
    if(Puke.withName("♦")== pai||Puke.withName("♦")==pai)
      true
    else
      false
  }
  1. 编写一个枚举,描述RGB立方体的8个角。ID使用颜色值(例如:红色是0xff0000)
object RGB extends Enumeration{
  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")
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值