在kotlin中,有很多好用的内置函数,用好了可以大大提升开发效率,下面我们就来聊聊比较常用的那几个
1.let
1.1简介
- 定义:一个作用域函数
- 作用:定义一个变量在一个特定的作用域范围内,避免一些判断null的操作
- 应用场景:明确一个变量所处特定的作用域范围内可使用,针对一个可null的对象统一做判空处理
//为了方便以下代码说明,统一声明类和变量
class Person(var name:String="lgh",var age:Int=18) {
fun fun1(){ println("person fun1") }
fun fun2(){ println("person fun2") }
fun fun3(){ println("person fun3") }
}
var mVar:Person?=null
1.2 使用示例
//java中代码
if(mVar!=null){
mVar.fun1();
mVar.fun2();
mVar.fun3();
}
//使用kotlin,不适用let
mVar?.fun1()
mVar?.fun2()
mVar?.fun3()
//使用kotlin,并且适应let
//统一判空处理 & 确定了mVar变量的作用域
mVar?.let{
it.fun1()
it.fun2()
it.fun3()
}
2.also
2.1简介
作用: 类似于let ,区别至于返回值
- let:返回值=最后一行 return 的表达式
- also: 返回值=传入对象的本身
2.2 示例
//let
val result =mVar?.let {
it.fun1()
it.fun2()
it.fun3()
100 //这个才是最终返回的
}
//let的最终返回结果 result = 100
//also
val result1 = mVar?.also {
it.fun1()
it.fun2()
it.fun3()
100
}
//also 最终返回的result1 = mVar
3.with
3.1 简介
调用一个对象的多个方法或者属性时,可以省略掉重复的对象名,直接调用方法或者属性
3.2 示例
mVar=Person("lgh",18)
//java用法
println("name is "+mVar.name+",age is "+mVar.age)
mVar.fun1();
//kotlin 并且使用with
with(mVar){
//在with内部可以直接调用Person的属性
println("name is $name,age is $age")
fun1() //可以直接调用Person内部的方法
}
4.run
4.1 简介
结合了let、with的作用
- 调用一个对象的多个方法或者属性时,可以省略掉重复的对象名,直接调用方法或者属性
- 定义一个变量在特定作用域内,统一做判空处理
4.2 示例
mVar?.run {//可以统一判空
println("my name is $name,I am $age years old")//直接调用对象内部的属性
fun1() //函数
}
5.apply
5.1 简介
与run函数类似,但区别在于返回值:
- run :返回最后一行的值/表达式
- apply : 返回传入的对象本身
5.2 示例
mVar= Person()
//run
val result=mVar?.run {
println("my name is $name,I am $age years old")//直接调用对象内部的属性
fun1() //函数
100
}
//run函数 最终返回值 result=100
//apply
val result1=mVar?.apply {
println("my name is $name,I am $age years old")//直接调用对象内部的属性
fun1() //函数
100
}
//apply函数最终返回值 result1=mVar
好了,以上就是kotlin常用的内置函数,看起来是不是很方便
最后来总结以下
网友评论