Kotlin_lambda expression
Article Directory
Lambda expressions introduced in Java8, this is the most Java developers excitement and anticipation of a function. Lambda expressions that what is it?
Lambda is the expression essentially short code is transmitted to the other functions, in our previous Java or Kotlin, the parameters of a function may be a simple basic data types of variables or instance variables of an object. Lambda expressions can occur so that we can put a piece of code as a value to treat, because it is a value, it can be passed, so Lambda can be passed as parameters to other functions. Lambda expressions appear, so that our code more concise.
Optimization 1.lambda expression
fun main(args: Array<String>) {
//lambda表达式的优化
val a = 10
val b = 20
val r1 = ca3(a,b){a,b->
a+b
}
val r2 = ca3(a,b){a,b->
a*b
}
println("$r1,$r2")
}
fun ca3(a1: Int,a2: Int,bolck:(Int,Int)->Int):Int{
var res = bolck(a1,a2)
return res
}
Result
30
200
2. anonymous function
fun main(args: Array<String>) {
var a = 10
var b = 20
var r1 = 0
//匿名函数为lambda表达式
r1 = ca1(a,b,{a,b->
a+b
})
println(r1)
var r2 = ca1(a,b,{a,b->
a * b
})
println(r2)
}
fun ca1(a1: Int,a2: Int,bolck:(Int,Int)->Int):Int{
var res = bolck(a1,a2)
return res
}
Result
30
200
3. Simple lambda expressions
() And invoke
fun main(args: Array<String>) {
// {
// println("1")
// }()
{
println("2")
}.invoke()
}
Result
2
4. There is a lambda expression parameter
fun main(args: Array<String>) {
// val res = {a:Int,b:Int->
// a+b
// }(10,20)
// println(res)
val res1 = {a:Int,b:Int->
a+b
}.invoke(10,20)
println(res1)
}
Result
30
5.invoke features
You can accept null
fun main(args: Array<String>) {
// val block:()->Unit =
// {
// println("1")
// }
// block()
// block.invoke()
val block1:(()->Unit)? = null
{
println("1")
}
block1?.invoke()
}
Results
1
6.lambda expression _it
When only one parameter can use it.
fun main(args: Array<String>) {
var a = 10
// val res = ca4(a, {a ->Int
// a+10
// })
// println(res)
//当只有一个参数的时候可以用到it
var res1 = ca4(a,{it
it+10
})
println(res1)
}
fun ca4(a1: Int,bolck:(Int)->Int):Int{
return bolck(a1)
}
Result
20
7.lambda expression _foreach
fun main(args: Array<String>) {
var str = "里斯"
str.forEach ({ char->
println(char)
})
//lambda表达式优化,括号迁移
str.forEach() {char->
println(char)
}
//当括号中没有参数的时候可以省略
str.forEach { char->
println(char)
}
//lambda表达式只有一个参数,可以使用it
str.forEach {
println(it)
}
}
The results
in
Si
in
Si
in
Si
in
Si
lambda expression is optimized when the migration parentheses, brackets if no time parameter may be omitted parentheses
8.lambda expression _indexoffirst
The first character to determine whether a character. Then return to index
fun main(args: Array<String>) {
val arrayOf = arrayOf("11", "21", "13")
//判断第一个字符为1开头的索引
var index = arrayOf.indexOfFirst { it
it.startsWith("1")
}
println(index)
}
Results
0
9. Note
General lambda expression returns the last line
fun main(args: Array<String>) {
val res = {
"a"
println("1")
}()
//lambda表达式返回最后一行
println(res)
}
Results
1