Kotlin学习(四)之---- 常见内置函数的总结apply,with,let,also,run....

引用:

var info : String ?= "Allen"
fun method1(name : String?) : String{
     return "我是方法1"
}

fun method2(name : String) : Int{
    return  2;
}

fun method3(age : Int) : Boolean{
    return true
}

一. apply函数

    info.apply {
       method1(this)
    }.apply {
        println(this)
    }.apply {
        println(this)
    }

说明:

    apply返回值类型永远是info本身,即调用它的对象本身 apply 有this,this == info本身 由于返回值都是它本身,因此可以使用链式调用
    参考:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述上面这几种方式效果一样。
    另外:因为返回值都是同一个文件,所以可以这么写,表示都对同一个文件进行操作
    在这里插入图片描述二. let函数
    案例:
    在这里插入图片描述
    说明: let返回值类型随匿名函数 (即lambda表达式) 的最后一行代码的改变而改变 let函数的匿名函数中持有的是 it == 调用它的对象本身
    name1.let {
       method1(it) //返回值是String
    }.let {
      method2(it) //返回值是Int
    }.let {
      method3(it) //返回值是Boolean
    }
    //最终返回值是Boolean

在这里插入图片描述

三. run函数
案例:配合具名函数
在这里插入图片描述
输出:
在这里插入图片描述
结合匿名函数(也就是lambda):
在这里插入图片描述
输出:
在这里插入图片描述
说明:

    run函数返回值类型随匿名函数 (即lambda表达式) 的最后一行代码的改变而改变 持有this == 调用它的对象本身,跟apply一样

四. with函数
在这里插入图片描述
具名操作:
在这里插入图片描述
输出:
在这里插入图片描述
匿名操作:
在这里插入图片描述
说明:跟run函数几乎一样,只是使用的操作不一样,with(参数){},参数.run{}

五. also函数
案例:
在这里插入图片描述

说明:跟apply的差别是 apply里面是this == 调用它的对象本身,而also里面是 it = =调用它的对象本身

六. takeIf函数
案例和说明:
在这里插入图片描述
七. takeUnless
与takeIf相反
案例和说明:
在这里插入图片描述
总结:

    apply:返回值永远是调用它的对象本身,且持有this == 调用它的对象本身 let:返回值与匿名函数(lambda)的最后一行代码有关,持有it == 调用它的对象本身 run:返回值与匿名函数(lambda)的最后一行代码有关,持有this == 调用它的对象本身 with:跟run一样 also:返回值永远是调用它的对象本身,且持有it == 调用它的对象本身 takeIf : 函数内为true则返回调用它的对象本身,false则返回null,持有it == 调用它的对象本身,结合?: 使用 takeUnless : 函数内为true则返,回null,false则返回调用它的对象本身,持有it == 调用它的对象本身,结合 it.isNullOrBlank()一起使用
来源url
栏目