一、Lambda(匿名函数)
//定义方式
fun dome() {
//在这里a就是一个函数,需要传参,lambda默认会返回最后一条执行语句
var a : (Int, Int) -> Int = {x,y ->
x+y
}
println(a(1,2))
}
//简写
fun dome2() {
//和前者一样,但是需要明确指定实参数据类型
var a = {x :Int, y:Int ->
x+y
}
println(a(1,2))
}
二、Lambda在库函数上的应用
var x : Int = "13345672".count()//这是一个库函数的使用
//这是使用了库函数+lambda,作用是让count()计算为3的个数有多少,扩展了原有的函数的使用条件。
var x2 : Int = "13345672".count({i ->
i == '3'
})
//可以直接省略括号
var x3 : Int = "13345672".count { i ->
i == '3' }
//只要一个参数的时候,可以直接使用it
//it(系统提供的lambda的变量,只在一个参数的时候出现)
var x4 : Int = "13345672".count {
it == '3'
}
总结
- 简写非常多,建议都要掌握,便于学习他人代码,自己使用可以使用一下方式:
//没有参数的情况下
var y = { "13132" }
println(y())
//有参数的情况下
var z = { name:String , age:Int -> name + age}
println(z("张三",20))