已知程序如下,其中op可能是两个数的比较规则,或者计算规则。 def cal(num: Array[Int], op:(Int,Int) => Int) = { } 先要求数组的所有数之和以及求数组的最大值, val arr = cal(Array(1, 2, 3, 4,5,6,7,8), opAdd)。请实现cal函数及对应高阶函数。
时间: 2024-03-03 08:50:40 浏览: 167
已知一个int数组, 编程从数组中获取最大数
可以使用高阶函数来实现cal函数,具体实现如下:
```scala
def cal(num: Array[Int], op:(Int,Int) => Int): (Int, Int) = {
var sum = 0
var max = num(0)
for(i <- num.indices) {
sum = op(sum, num(i))
max = if(num(i) > max) num(i) else max
}
(sum, max)
}
def opAdd(a: Int, b: Int): Int = a + b
```
其中,cal函数接收一个整型数组和一个函数作为参数,函数类型为(Int, Int) => Int,即接收两个整型参数并返回一个整型结果。在cal函数内部,我们通过循环遍历整型数组,使用op函数对数组元素进行累加并求出最大值,最终返回一个元组,包含数组元素之和和最大值。opAdd函数为具体的操作函数,实现了两个整型数值相加的操作。
阅读全文