本文参考文章,作延展阅读: 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 方便在调用函数前先对对象进行判空操作。