说明
函数可以返回一个函数
返回一个无参、无返回值的函数
def main(args: Array[String]): Unit = {
/*
定义函数
返回值是一个函数,()=>Unit表示该函数无参数,且无返回值
*/
def test():() => Unit = {
//在test()函数内部又定义一个函数
def add() : Unit = {
println("1111")
}
return add
}
println(test)
val fun = test() //调用test()函数,返回 add函数
println(fun)
fun() // 调用 add 函数
test()()//合成一步调用,调用test()函数,返回 add函数,第二个小括号表示调用 add函数
}
执行流程:
合成一步调用
def main(args: Array[String]): Unit = {
/*
定义函数
返回值是一个函数,()=>Unit表示该函数无参数,且无返回值
*/
def test():() => Unit = {
//在test()函数内部又定义一个函数
def add() : Unit = {
println("1111")
}
return add
}
println(test)
test()()//合成一步调用,调用test()函数,返回 add函数,第二个小括号表示调用 add函数
}
执行过程如下:
返回一个 有参数、有返回值 的函数
外部函数 的返回值类型,是 内部函数 的 形参 和 返回值类型
图解定义:
图解调用:
def main(args: Array[String]): Unit = {
/*
定义函数
返回值是一个函数,(Int,Int) => Int表示该函数有2个Int参数,且返回值是Int型
*/
def test():(Int,Int) => Int = {
//在test()函数内部又定义一个函数
def add(a:Int,b:Int) : Int = {
a+b
}
return add
}
println(test)
val fun = test() //调用test()函数,返回 add函数
println(fun)
val res = fun(1,2) //调用 add() 函数
println(res)
}
合成一步调用
def main(args: Array[String]): Unit = {
/*
定义函数
返回值是一个函数,(Int,Int) => Int表示该函数有2个Int参数,且返回值是Int型
*/
def test():(Int,Int) => Int = {
//在test()函数内部又定义一个函数
def add(a:Int,b:Int) : Int = {
a+b
}
return add
}
println(test)
val res = test()(1,2) //调用test()函数,返回 add函数,第二个小括号表示调用 add函数
println(res)
}



