Kotlin 符号,高阶函数,内联函数,Lambda 表达式
特殊符号
?
表示 是否允许空值的存在!!
表示 如果对象为null,那么系统一定会报异常!?:
表示 对象A ?: 对象B 表达式,意思为,当对象 A值为 null 时,那么它就会返回后面的对象 B。::
表示 Kotlin 中 双冒号操作符 表示把一个方法当做一个参数,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。->
表示 一般用于函数类型的连接符号===
和==
的区别 在Kotlin中,=== 表示比较对象地址,== 表示比较两个值大小。
高阶函数
一个函数如果参数类型是函数或者返回值类型是函数,那么这就是一个高阶函数。
函数类型其实就是将函数的 “参数类型” 和 “返回值类型” 抽象出来
例如:
1 | var add(a:Int,b:Int) = a+b |
他的函数类型就是(Int,Int)->Int
而高阶函数意味着他而已接受一个函数的参数,或者他返回一个函数。
例如:
1 | //在以下main函数中,将show函数传递给了showUserName作为参数使用。 |
内联函数(inline)
一般情况下,调用函数。也就是将程序执行顺序转移到内存中存放该函数的位置,执行完后,再返回现场重新执行原本的内容。其中转换过程都是采用压栈和出栈的方式。而对于那些频繁调用的函数,将会有很大的时间和空间开销,因此使用内联函数,他的作用就是将函数体直接放在主进程内。用空间开销换时间开销。
- 支持 return 退出函数
- 禁止内联:
noinline
1
2
3
4
5
6
7
8
9
10// 在 main() 中调用 makeTest()
fun main() {
Log.i("zc_test", "main() start")
makeTest()
Log.i("zc_test", "main() end")
}
// 内联函数 makeTest()
private inline fun makeTest() {
Log.i("zc_test", "makeTest")
}
Lambda表达式
他是定义匿名函数的简单形式
1 | val sum = {x:Int,y:Int -> x+y} |
其中,参数声明放在->
前面,函数体放在->
后面
还可以将可选标注先留下
1 | val sum:(Int,Int)->Int = {x,y->x+y} |
在kotlin中,如果一个函数的最后一个参数是lambda表达式,那么可以直接将表达式写在括号外面。
如果只有一个参数,那么直接省略小括号。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小贺同学的blog!
评论