高阶函数是将函数用作参数或返回值的函数
fun main(args: Array<String>) {
val times = calc(100, 15) { a, b ->
a * b
a/b
}
fun calc(m: Int,n:Int,block:(Int,Int)->Int):Int{
return block(m,n)
}
//结果计算两个数相除的结果 6
调用
fun times(m:Int,n:Int,t:Int):Int{
return m*n*t
}
fun calc(m:Int,n:Int,t:Int,block:(Int,Int,Int)->Int):Int{
return block(m,n,t)
}
fun main(args: Array<String>) {
println(calc(12, 13, 14, ::times))
}
lambda表达式去()
lambda表达式是最后一个参数,可以把()前移
如果()前移之后 ()里面没有参数 ()可以省略
lambda表达式单独使用
fun main(args: Array<String>) {
val result = {a:Int,b:Int->
a+b
}.invoke(10,20) //非空判断
println(result)
val ss= {a:Int,b:Int->a*b}(15,12)
println(ss)
}
常见的lambda表达式
•Foreach
•Array.indexof
编程思想
•OOP(Object Oriented Programming) 面向对象编程
•FP(Functional Programming) 函数式编程
闭包
闭包就是能够读取其他函数内部变量的函数
函数里面声明函数,函数里面返回函数,就是闭包
闭包就是一个代码块,用“{ }”包起来。此时,程序代码也就成了数据,可以被一个变量所引用
def c2 = { text -> println text }
“->;”之前的部分为闭包的参数,如果有多个参数,之间可用逗号分割;“->”之后的部分为闭包内的程序代码。如果省略了“->”和它之前的部分,此时闭包中代码,可以用名为“it”的变量访问参数。
闭包的返回值和函数的返回值定义方式是一样的:如果有return语句,则返回值是return语句后面的内容;如果没有return语句,则闭包内的最后一行代码就是它的返回值。
应用场景
1、保护函数内的变量安全。
2、在内存中维持一个变量
使用注意
闭包赋值给变量后,待变量销毁,内存释放
网友评论