前面花了5篇文章分别讲了5个内联函数的作用及使用方法、使用场景、分别是run函数、let函数、with函数、apply函数、also函数。有兴趣的都可以去看看,链接都放在下面了

 kotlin 之几个常见的内联函数(五)_水很清的博客-CSDN博客

 kotlin 之几个常见的内联函数(四)_水很清的博客-CSDN博客

 kotlin 之几个常见的内联函数(三)_水很清的博客-CSDN博客

 kotlin 之几个常见的内联函数(二)_水很清的博客-CSDN博客

kotlin 之几个常见的内联函数(一)_水很清的博客-CSDN博客

这几个函数都有相似点,也很好记,但是如果平时用的少,其实也忘记的快,现在kotlin也算很流行了,前段时间我当面试官的时候,也会问到,会不会kotlin,会的话是一个加分项。

建议大家平时多用kotlin,内联函数在合适的地方也建议多用,虽然很多初学者都说,kotlin可读性比较差,其实不能说kotlin可读性差,主要是java 语言写习惯了,看多了java语言的语法,一开始接触kotlin就会有点不习惯,毕竟kotlin在属性的定义上类型跟命名与java比是反过来的,一开始觉得不习惯是正常的,总之熟能生巧,写多了就好。

说多了,还是总结一下5个内联函数的内容,如下面表格。

函数名定义inline的结构函数体内使用的对象返回值是否是扩展函数适用的场景
letfun T.let(block: (T) -> R): R = block(this)it指代当前对象闭包形式返回适用于处理不为null的操作场景
withfun with(receiver: T, block: T.() -> R): R = receiver.block()this指代当前对象或者省略闭包形式返回适用于调用同一个类的多个方法时,可以省去类名重复,直接调用类的方法即可,经常用于Android中RecyclerView中onBinderViewHolder中,数据model的属性映射到UI上
runfun T.run(block: T.() -> R): R = block()this指代当前对象或者省略闭包形式返回适用于let,with函数任何场景。
applyfun T.apply(block: T.() -> Unit): T { block(); return this }this指代当前对象或者省略返回this1、适用于run函数的任何场景,一般用于初始化一个对象实例的时候,操作对象属性,并最终返回这个对象。
2、动态inflate出一个XML的View的时候需要给View绑定数据也会用到.
3、一般可用于多个扩展函数链式调用 
4、数据model多层级包裹判空处理的问题
alsofun T.also(block: (T) -> Unit): T { block(this); return this }it指代当前对象返回this适用于let函数的任何场景,一般可用于多个扩展函数链式调用
Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐