《快学Scala》第六章习题解答

本文通过具体的Scala编程练习介绍了面向对象的设计方法,包括单位转换类、枚举类型定义、扑克牌花色检测函数等,并展示了如何使用伴生对象创建类实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RT。

package com.scalalearn.scala.main
/**
  * 快学scala 06习题
  */

//1.编写一个Conversions对象,加入inchesToCentimeters,gallonsToLiters和milesToKilometers方法
object Conversions{
  def inchesToCentimeters(input:BigInt):BigInt={
    //省略...
    input
  }

  def gallonsToLiters(input:BigInt):BigInt={
    //省略...
    input
  }

  def milesToKilometers(input:BigInt):BigInt={
    //省略...
    input
  }
}

//2.前一个不是很面向对象,提供一个通用的超类UnitConversion并定义超类的InchesToCentimeters,GallonsToLiters和MilesToKilometers对象
abstract class UnitConversion{
  def transform(input:BigInt):BigInt;
}

object InchesToCentimeters extends UnitConversion{
  def transform(input:BigInt):BigInt = {
    //省略...
    input
  }
}
object GallonsToLiters extends UnitConversion{
  def transform(input:BigInt):BigInt = {
    //省略...
    input
  }
}
object MilesToKilometers extends UnitConversion{
  def transform(input:BigInt):BigInt = {
    //省略...
    input
  }
}

//4.定义一个Point类和一个伴生对象,使得我们不用new而是直接用Point(3,4)来构造Point实例
class Point(px:Int,py:Int){
  var x:Int = 0
  var y:Int = 0

  x = px
  y = py
}

object Point{
  def apply(px:Int,py:Int):Unit = {
    new Point(px,py)
  }
}

//6.用一个枚举扑克牌的四种花色
class PokerCard{}

object PokerCard extends Enumeration{
  val HEART = Value(0)
  val SPADE = Value(1)
  val CLUB = Value(2)
  val DIAMOND = Value(3)
}

//8.用枚举描述RGB立方体的8个角,ID用色值表示
object RGBCube extends Enumeration{
  //我这里就不真的对应色值了;就上4个角和下4个角分别定义一下
  val top1 = Value(0)
  val top2 = Value(1)
  val top3 = Value(2)
  val top4 = Value(3)
  val bottom1 = Value(4)
  val bottom2 = Value(5)
  val bottom3 = Value(6)
  val bottom4 = Value(7)
}

object LearnScala06 {
  //7.写一个检测扑克牌花色是否为红色的函数
  def checkColor(pokerCard:PokerCard.Value):Boolean = {
    if(pokerCard == PokerCard.HEART || pokerCard == PokerCard.DIAMOND){
      true
    }else{
      false
    }
  }

  def main(args:Array[String]):Unit = {
    println("================execise6==================")
    val point = Point(3,4)

    println("================execise7==================")
    println(LearnScala06.checkColor(PokerCard.HEART))
  }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值