本文参考文章,作延展阅读:

    1、【Kotlin篇】差异化分析,let,run,with,apply及also

    对每个函数的作用做了详细讲解和列举了丰富示例,值得一读

    2、巧用Kotlin:内置函数let、also、with、run、apply大大提高你的开发效率!

    通过表格对比了不同函数的区别,行文简单,可以说简单直观是这篇文章最大的优点

    函数名 作用 备注
    let 1、作用域中通过 it 引用对象
    2、返回值为最后一行或return
    若最后一行为非赋值语句才会返回,否则返回Unit。
    also 1、作用域中通过 it 引用对象
    2、返回值为调用对象本身
    with 1、作用域中通过 this 引用对象
    2、返回值为最后一行或return
    该函数不是拓展函数,需要传入对象,因此要求对象不为null,所以能对对象进行判空处理。
    run 1、作用域中通过 this 引用对象
    2、返回值为最后一行或return
    若最后一行为非赋值语句才会返回,否则返回Unit。
    apply 1、作用域中通过 this 引用对象
    2、返回值为调用对象本身

    除了 with 函数外,其他函数都可以很方便的先调用对象先进行判空处理,如下所示:

    1. object?.fun{}

    runapply 函数与 with 函数的作用相近,都可以在作用域中通过 this 引用对象,排除返回值的不同,它们最大的区别在于 runapply 方便在调用函数前先对对象进行判空操作。