88、创建一个名为convertToSize的方法,该方法将字符串转换为其长度,直接使用整数和双精度浮点数,并将Person类型转换为1。如果没有匹配的类型,则返回0。该方法的返回类型是什么?满足以下测试用例:convertToSize(45)结果为45;convertToSize(“car”)结果为3;convertToSize(“truck”)结果为5;convertToSize(Person(“Joanna”))结果为1;convertToSize(45.6F)结果为45.6F;convertToSize(Vector(1, 2, 3))结果为0。
根据需求,该方法要处理多种类型的数据,返回值可能是整数、浮点数等,所以返回类型可以是 Any 。以下是Scala代码示例:
case class Person(name: String)
object Main extends App {
def convertToSize(x: Any): Any = x match {
case s: String => s.length
case i: Int => i
case d: Float => d
case p: Person => 1
case _ => 0
}
println(convertToSize(45) == 45)
println(convertToSize("car") == 3)
println(convertToSize("truck") == 5)
println(convertToSize(Person("Joanna")) == 1)
println(convertToSize(45.6F) == 45.6F)
println(convertToSize(Vector(1, 2, 3)) == 0)
}
89、定义一个新的Plane类,该类包含一个乘客向量和飞机名称,以便创建一次行程。满足以下测试:val travelers = Vector(Passenger(“Harvey”, “Rabbit”), Passenger(“Dorothy”, “Gale”)); val trip2 = Vector( Train(travelers, “Reading”), Plane(travelers, “B757”), Bus(travelers, 100)); travel(trip2(1)) is “Plane B757 ” + “Vector(Passenger(Harvey,Rabbit), ” + “Passenger(Dorothy,Gale))” ,假设Train、Bus、Passenger类以及travel方法已定义。
需要定义一个 Plane 类,类中包含一个 Vector 类型的乘客列表和一个飞机名称。
以下是示例代码:
case class Plane(passengers: Vector[Passenger], name: String)
要满足测试, travel 方法需要能正确处理 Plane 对象,返回相应格式的字符串。
90、重构以下示例。首先,移除中间结果。满足以下测试: def assignResult(arg:Boolean):Int = { val result = if(arg) 42 else 47 result } , assignResult(true) 应为 42, assignResult(false) 应为 47。
移除中间结果后的代码为:
def assignResult(arg: Boolean): Int = if (arg) 42 else 47
91、编写一个函数 assignResult2,该函数接收一个布尔类型的参数,移除不必要的花括号,并且满足 assignResult2(true) 结果为 42,assignResult2(false) 结果为 47。
可将代码修改为:
def assignResult2(arg: Boolean): Int = if (arg) 42 else 47
92、创建一个名为 Exclaim 的类,该类有一个类参数 var s: String。创建方法 parens 和 noParens,将感叹号追加到 s 后面并返回结果。满足以下测试:val e = new Exclaim(“yes”); e.noParens 为 “yes!”; e.parens() 为 “yes!”
以下是满足要求的 Scala 代码:
class Exclaim(var s: String) {
def parens(): String = s + "!"
def noParens: String = s +

最低0.47元/天 解锁文章
670

被折叠的 条评论
为什么被折叠?



