Scala编程实践:从类设计到测试驱动开发

44、在帆船类(Sailboat)和摩托艇类(Motorboat)中分别添加一个名为 signal 的方法,该方法创建一个 Flare 对象并调用 Flare 对象的 light 方法。满足以下条件:创建一个 Sailboat2 类的对象 sailboat2,调用其 signal 方法并将结果赋值给 signal,使用断言确保 signal 的值为“Flare used!”;创建一个 Motorboat2 类的对象 motorboat2,调用其 signal 方法并将结果赋值给 flare2,使用断言确保 flare2 的值为“Flare used!”。

以下是满足需求的 Scala 代码示例:

// 定义 Flare 类
class Flare {
  def light: String = "Flare used!"
}

// 定义 Sailboat2 类
class Sailboat2 {
  def signal(): String = {
    val flare = new Flare
    flare.light
  }
}

// 定义 Motorboat2 类
class Motorboat2 {
  def signal(): String = {
    val flare = new Flare
    flare.light
  }
}

// 测试代码
val sailboat2 = new Sailboat2
val signal = sailboat2.signal()
assert(signal == "Flare used!", "Expected Flare used! Got " + signal)

val motorboat2 = new Motorboat2
val flare2 = motorboat2.signal()
assert(flare2 == "Flare used!", "Expected Flare used!, Got " + flare2)

45、使用反向域名标准重命名 royals 包。使用 scalac 进行编译,并在计算机上创建一个目录层次结构来存放这些类。修改 ImportRoyalty.scala 文件并保存为 ImportTests.scala 。更新包导入语句以使用新的类。确保测试能正常运行。

首先,将 TheRoyalty.scala 文件中的

package royals

改为

package com.atomicscala.royals

接着,使用 scalac 编译该文件:

scalac TheRoyalty.scala

编译完成后,会生成相应的目录层次结构 com/atomicscala/royals 来存放类文件。

然后,修改 ImportRoyalty.scala 文件,将其保存为 ImportTests.scala ,并更新导入语句,把

import royals.Royalty

改为

import com.atomicscala.royals.Royalty

最后,运行 ImportTests.scala 以确保测试正常运行:

scala -nocompdaemon ImportTests.scala

46、在一个Scala程序中,添加另一个类Crest。为该类的构造函数传入一个名称(字符串类型)和一个年份(字符串类型)。创建一个方法description,当名称为“Bear”且年份为“1875”时,该方法返回“Bear in the year 1875”。

以下是Scala代码实现:

class Crest(var name: String, var year: String) { 
  def description: String = s"$name in the year $year."
}

你可以使用以下代码测试该类:

val crest = new Crest("Bear", "1875")
println(crest.description) // 输出: Bear in the year 1875.

47、创建一个名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值