kotlin高级函数和lambda表达式
kotlin的表达式函数体
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22fun main() {
println(add_express(1, 2))
println(add_block(1, 2))
println(add_lambda(1, 2))
}
/**
* 代码块体,最完整的函数体
*/
fun add_block(a: Int, b: Int): Int {
return a + b
}
/**
* 表达式体
* 要求,他的函数体是由单个表达式构成的。
* 那么她会自动判断返回类型。可以省略掉返回类型,同时需要省略掉花括号和return
*/
fun add_express(a: Int, b: Int) = a + b
var add_lambda = { a: Int, b: Int -> a+b}
fun add(a:Int,b:Int):(Int,Int)->(Int)={ a: Int, b: Int -> a+b}kotlin高阶函数
一个函数如果参数类型是函数或者返回值类型是函数,那么这就是一个高阶函数。
函数类型其实就是将函数的 “参数类型” 和 “返回值类型” 抽象出来
例如:1
fun add():(Int,Int)->(Int)={ a: Int, b: Int -> a+b}
这里表示他的返回类型为
(Int,Int)->(Int)
Lambda表达式
同样的在lambda表达式中,他的函数体也只有一个表达式。
他是定义匿名函数的简单形式1
val sum = {x:Int,y:Int -> x+y}
其中,参数声明放在->前面,函数体放在->后面
还可以将可选标注先留下1
val sum:(Int,Int)->Int = {x,y->x+y}
在kotlin中,如果一个函数的最后一个参数是lambda表达式,那么可以直接将表达式写在括号外面。
如果只有一个参数,那么直接省略小括号。特殊符号
?
表示 是否允许空值的存在!!
表示 如果对象为null,那么系统一定会报异常!?:
表示 对象A ?: 对象B 表达式,意思为,当对象 A值为 null 时,那么它就会返回后面的对象 B。::
表示 Kotlin 中 双冒号操作符 表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。->
表示 一般用于函数类型的连接符号===
和==
的区别 在Kotlin中,=== 表示比较对象地址,== 表示比较两个值大小。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小贺同学的blog!
评论