你提供的代码定义了两个函数字面量 sum
和 mul
,以及一个接受另一个函数作为参数的高阶函数 op
。这段代码展示了如何在Scala中使用函数字面量和将函数作为参数传递给其他函数。下面是你的代码及其解释:
scala
深色版本
object Test14_1 {
def main(args: Array[String]): Unit = {
// 定义一个求和的函数字面量
var sum = (x: Int, y: Int) => x + y
// 定义一个乘法的函数字面量
var mul = (x: Int, y: Int) => x * y
// 定义一个高阶函数,它接受一个回调函数(callback)和两个整数参数
// 然后应用这个回调函数到这两个整数上,并返回结果
var op = (callback: (Int, Int) => Int, x: Int, y: Int) => {
callback(x, y)
}
// 使用op函数,并传入sum函数字面量以及参数100和200
var rs = op(sum, 100, 200)
println(rs) // 输出 300
// 直接调用sum函数字面量
println(sum(100, 200)) // 再次输出 300
// 调用mul函数字面量
println(mul(100, 200)) // 输出 20000
}
}
代码解析
- 函数字面量
sum
接受两个整数并返回它们的和。 - 函数字面量
mul
接受两个整数并返回它们的乘积。 - 高阶函数
op
接受三个参数:一个类型为(Int, Int) => Int
的函数callback
,以及两个整数x
和y
。op
函数的作用是调用callback
并传入x
和y
作为参数,然后返回结果。
当你运行这段程序时,它会打印出以下内容:
- 第一次调用
op(sum, 100, 200)
的结果是300
,因为sum
将100
和200
相加。 - 直接调用
sum(100, 200)
也得到300
。 - 最后,调用
mul(100, 200)
得到20000
,即100
与200
的乘积。
这段代码很好地演示了如何在Scala中使用匿名函数和高阶函数。通过这种方式,你可以创建灵活且可复用的代码结构。