经过前面一系列对Kotlin
讲解,相信大家已经能对Kotlin
有了一个基本的认识。如果你又Java
语言方面的编程经验,你可能已经不满足前面的基础语法了。从这篇文章起,就为大家讲解Kotlin
语言中的高级操作。Lambda
语法在Java
中已经被广泛的运用,我们在开发Android
中几乎上每一个项目也会在项目中接入Lambda
插件,因为Lambda
确实能简少很多的代码量。无独有偶,在Kotlin
中也是Lambda
语法的,在这篇文章中就详细的为大家讲解Lambda
语法的编写与使用,同时会后面的Kotlin——高级篇(二):高阶函数详解与标准的高阶函数使用打下基础。
目录
一、Lambda介绍
在上面已经提到了在
Java
中已经被广泛的运用,但是也是在Java8
的时候才支持这种Lambda
表达式。在其他的编程语言中(例如:Scala
语言)。而这种表达式是语法糖中的一种。值得庆幸的是,Kotlin
一经开源成熟就已经支持这种语法。
Lambda
表达式的本质其实是匿名函数
,因为在其底层实现中还是通过匿名函数
来实现的。但是我们在用的时候不必关心起底层实现。不过Lambda
的出现确实是减少了代码量的编写,同时也是代码变得更加简洁明了。Lambda
作为函数式编程的基础,其语法也是相当简单的。这里先通过一段简单的代码演示没让大家了解Lambda
表达式的简洁之处。
例:
// 这里举例一个Android中最常见的按钮点击事件的例子
mBtn.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
Toast.makeText(this,"onClick",Toast.LENGTH_SHORT).show()
}
})
等价于
// 调用
mBtn.setOnClickListener { Toast.makeText(this,"onClick",Toast.LENGTH_SHORT).show() }
二、Lambda使用
关于Lambda
的使用,我这里从从来哪个方面讲解,一是先介绍Lambda
表达式的特点,而是从Lambda
的语法使用讲解。
2.1、Lambda表达式的特点
古人云:欲取之,先与之。
要学习Lambda
表达式语法,必先了解其特点。我在这里先总结出Lambda
表达式的一些特征。在下面讲解到Lambda
语法与实践时大家就明白了。即:
Lambda
表达式总是被大括号括着- 其参数(如果存在)在
->
之前声明(参数类型可以省略)- 函数体(如果存在)在
->
后面。
2.2、Lambda语法
为了让大家彻底的弄明白Lambda
语法,我这里用三种用法来讲解。并且举例为大家说明
语法如下:
1. 无参数的情况 :
val/var 变量名 = { 操作的代码 }
2. 有参数的情况
val/var 变量名 :