feat:线下课:高阶函数

This commit is contained in:
2026-09-14 09:33:58 +08:00
parent 9fb97f548f
commit baa611b5be
@@ -0,0 +1,63 @@
package chapter2.demo4
object DemoMethod2 {
def main(args: Array[String]): Unit = {
def f(n: Int): Int = {
println("调用了 f 函数")
n + 1
}
println("f0函数的返回结果是:" + f(0))
// 1. 函数可以作为值进行传递
val f1 = f(_)
println("f1函数的返回结果是:" + f1(1))
val f2 = f _
println("f2函数的返回结果是:" + f2(2))
// 明确f3类型(是一个形如Int=>Int的函数)
val f3: Int => Int = f
// val a: Int = 1
println("f3函数的返回结果是:" + f3(3))
println("=======================")
// 2. 函数作为参数进行传递
def eval(x: Int, y: Int, aaa: (Int, Int) => Int): Unit = {
println(s"传入三个参数,分别是$x 和$y 和${aaa}")
println("计算后的结果是:" + aaa(x, y))
}
def add(a: Int, b: Int) = a + b
def minus(a: Int, b: Int) = a - b
eval(1, 2, add)
eval(3, 1, aaa = minus)
eval(10, 10, (a, b) => a * b)
eval(10, 10, _ / _)
println("=======================")
// 3. 函数可以作为另一个函数返回值返回
def ff(): (Int,Int)=>Int = { // 定义一个ff函数,这个函数返回 一个形如 (Int,Int)=>Int 的函数
println("调用了test")
def add(a: Int, b: Int) = a + b
add
}
val ff0:(Int,Int)=>Int = ff() // 调用ff这个函数,返回了一个形如 (Int,Int)=>Int 的函数,并且赋值给ff0
println("ff0调用结果是:" + ff0(1,2)) // 既然ff0是一个函数,那么我就可以调用这个函数
// ff() = add//返回了一个函数 def add(a: Int, b: Int) = a + b
// 链式调用,先调用ff函数,返回的函数继续调用,函数柯里化
val ff01 = ff()
println("ff01调用结果是:" + ff01(1,2))
println(ff()(1,2))
}
}