66、编写一个方法,对可变参数列表中的数字进行平方运算,然后返回它们的和。满足以下测试用例:squareThem(2) 的结果为 4;squareThem(2, 4) 的结果为 20;squareThem(1, 2, 4) 的结果为 21。
以下是满足要求的 Scala 代码:
def squareThem(args: Int*): Int = {
var sum = 0
for (n <- args) {
sum += n * n
}
sum
}
67、定义一个名为SimpleTime2的类,将分钟的默认值设置为0,使得在创建对象时可以不必指定分钟。满足以下测试:val t2 = new SimpleTime2(hours=10); t2.hours is 10; t2.minutes is 0
可将`SimpleTime`类修改为使用默认参数,将分钟默认值设为0。示例代码如下:
```scala
class SimpleTime2(val hours: Int, val minutes: Int = 0) {
def subtract(other: SimpleTime2): SimpleTime2 = {
if (this.hours < other.hours || (this.hours == other.hours && this.minutes < other.minutes)) {
new SimpleTime2(0, 0)
} else {
val totalMinutesThis = this.hours * 60 + this.minutes
val totalMinutesOther = other.hours * 60 + other.minutes
val diffMinutes = totalMinutesThis - totalMinutesOther
new SimpleTime2(diffMinutes / 60, diffMinutes % 60)
}
}
}
##68、证明命名参数和默认参数可用于方法。创建一个类 `Item`,它接受两个类参数:一个字符串类型的名称和一个双精度类型的价格。添加一个 `cost` 方法,该方法具有命名参数 `grocery`(布尔类型)、`medication`(布尔类型)和 `taxRate`(双精度类型)。将 `grocery` 和 `medication` 默认设为 `false`,`taxRate` 默认设为 `0.10`。在这种情况下,食品杂货和药品不征税。通过计算适当的税款返回商品的总成本。满足以下测试:`val flour = new Item(name="flour", 4); flour.cost(grocery=true) is 4; val sunscreen = new Item(name="sunscreen", 3); sunscreen.cost() is 3.3; val tv = new Item(name="television", 500); tv.cost(taxRate = 0.06) is 530`
以下是满足该需求的 Scala 代码:
```scala
class Item(val name: String, val price: Double) {
def cost(grocery: Boolean = false, medication: Boolean = false, taxRate: Double = 0.10): Double = {
if (grocery || medication) {
price
} else {
price + price * taxRate
}
}
}
可以使用以下代码进行测试:
val flour = new Item(name = "flour", 4)
assert(flour.cost(grocery = true) == 4)
val sunscreen = new Item(name = "sunscreen", 3)
assert(sunscreen.cost() == 3.3)
val tv = new Item(name = "television", 500)
assert(tv.cost(taxRate = 0.06) == 530)
69、创建五个重载方法,将它们的参数相加。第一个方法没有参数,第二个方法有一个参数,依此类推。满足以下测试:f() 结果是 0;f(1) 结果是 1;f(1, 2) 结果是 3;f(1, 2, 3) 结果是 6;f(1, 2, 3, 4) 结果是 10。
// 定义重载方法 f
object OverloadingExample {
def f(): Int = 0
def f(a: Int): Int = a
def f(a: Int, b: Int): Int = a + b
def f(a: Int, b: Int, c: Int): Int = a + b + c
def f(a: Int, b: Int, c: Int, d: Int): Int = a +

最低0.47元/天 解锁文章
740

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



