scala高阶函数定义两个数的运算
时间: 2024-02-25 07:59:00 浏览: 20
Scala中可以使用高阶函数定义两个数的运算,例如:
```scala
def operate(a: Int, b: Int, f: (Int, Int) => Int): Int = f(a, b)
val sum = operate(2, 3, (x, y) => x + y) // 返回 5,表示 2 + 3
val diff = operate(5, 2, (x, y) => x - y) // 返回 3,表示 5 - 2
val product = operate(2, 4, (x, y) => x * y) // 返回 8,表示 2 * 4
```
在上述代码中,`operate`函数接收两个整型参数`a`和`b`,以及一个函数`f`,函数`f`接收两个整型参数并返回一个整型结果。通过传入不同的函数,`operate`函数可以实现不同的运算。
相关问题
Scala中定义一个函数使数组(1,170)变成 2,340
可以使用Scala中的高阶函数 `foldLeft` 来实现对数组的遍历和累加计算。以下是示例代码:
```scala
val arr = Array(1, 170)
val result = arr.foldLeft(0)((acc, cur) => acc + cur * 2)
println(result) // 输出 340
```
在这个例子中,`foldLeft` 函数的第一个参数是初始值,也就是累加器的初始值。在这里我们将初始值设为0。第二个参数是一个函数,用于对数组中的每个元素进行操作。这个函数有两个参数,第一个参数是累加器的当前值,第二个参数是数组中的当前元素。在这里我们将每个元素乘以2再加到累加器上。最终的结果就是数组中所有元素乘以2的和。
已知程序如下,其中op可能是两个数的比较规则,或者计算规则。 def cal(num: Array[Int], op:(Int,Int) => Int) = { } 先要求数组的所有数之和以及求数组的最大值, val arr = cal(Array(1, 2, 3, 4,5,6,7,8), opAdd)。请实现cal函数及对应高阶函数。
可以使用高阶函数来实现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函数为具体的操作函数,实现了两个整型数值相加的操作。