kotlin 之几个常见的内联函数(六)—— 总结篇

简介: 本篇内容对内联函数做了一个总结,分别是let、with、run、apply、also

前面花了5篇文章分别讲了5个内联函数的作用及使用方法、使用场景、分别是run函数、let函数、with函数、apply函数、also函数。有兴趣的都可以去看看,链接都放在下面了
https://developer.aliyun.com/article/998585?spm=a2c6h.24874632.expert-profile.15.30ed6e4f3LaHzB
https://developer.aliyun.com/article/998680?spm=a2c6h.24874632.expert-profile.14.30ed6e4f3LaHzB
https://developer.aliyun.com/article/998684?spm=a2c6h.24874632.expert-profile.13.30ed6e4f3LaHzB
https://developer.aliyun.com/article/998697?spm=a2c6h.24874632.expert-profile.12.30ed6e4f3LaHzB
https://developer.aliyun.com/article/998967?spm=a2c6h.24874632.expert-profile.11.30ed6e4f3LaHzB

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

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

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

函数名 定义inline的结构 函数体内使用的对象 返回值 是否是扩展函数 适用的场景
let fun T.let(block: (T) -> R): R = block(this) it指代当前对象 闭包形式返回 适用于处理不为null的操作场景
with fun with(receiver: T, block: T.() -> R): R = receiver.block() this指代当前对象或者省略 闭包形式返回 适用于调用同一个类的多个方法时,可以省去类名重复,直接调用类的方法即可,经常用于Android中RecyclerView中onBinderViewHolder中,数据model的属性映射到UI上
run fun T.run(block: T.() -> R): R = block() this指代当前对象或者省略 闭包形式返回 适用于let,with函数任何场景
apply fun T.apply(block: T.() -> Unit): T { block(); return this } this指代当前对象或者省略 返回this 1、适用于run函数的任何场景,一般用于初始化一个对象实例的时候,操作对象属性,并最终返回这个对象。2、动态inflate出一个XML的View的时候需要给View绑定数据也会用到。3、一般可用于多个扩展函数链式调用 4、数据model多层级包裹判空处理的问题
also fun T.also(block: (T) -> Unit): T { block(this); return this } it指代当前对象 返回this 适用于let函数的任何场景,一般可用于多个扩展函数链式调用
相关文章
|
6月前
|
存储 Kotlin
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
Kotlin中的内联函数:提升性能与解决Lambda表达式参数问题
|
Java Kotlin
Kotlin内联函数inline、noinline、crossinline
如果一个函数接收另一个函数作为参数,或返回类型是一个函数类型,那么该函数被称为是高阶函数
160 0
|
Java Kotlin
Kotlin学历之内联函数
Kotlin学历之内联函数
109 0
Kotlin学历之内联函数
|
Java Kotlin
Kotlin中内联函数的作用是什么?
在以前,因为学过一段时间Kotlin(并没有实际开发中用过),很多东西都忘记了,但是kotlin的代码看起来其实和Java没什么区别,感觉都差不多。所以不要认为 Kotlin 很难学。
208 0
|
Java Kotlin
kotlin 之几个常见的内联函数(五)
适用于let函数的任何场景,also函数和let很像,只是唯一的不同点就是let函数最后的返回值是最后一行的返回值而also函数的返回值是返回当前的这个对象。一般可用于多个扩展函数链式调用。
169 0
|
XML Java 数据格式
kotlin 之几个常见的内联函数(四)
从结构上来看apply函数和run函数很像,唯一不同点就是它们各自返回的值不一样,run函数是以闭包形式返回最后一行代码的值,而apply函数的返回的是传入对象的本身。
136 0
|
Java Kotlin
kotlin 之几个常见的内联函数(三)
适用于let,with函数任何场景。因为run函数是let,with两个函数结合体,准确来说它弥补了let函数在函数体内必须使用it参数替代对象,在run函数中可以像with函数一样可以省略,直接访问实例的公有属性和方法,另一方面它弥补了with函数传入对象判空问题,在run函数中可以像let函数一样做判空处理
146 0
|
Java Android开发 Kotlin
kotlin 之几个常见的内联函数(二)
with函数它不是以扩展的形式存在的。它是将某对象作为函数的参数,在函数块内可以通过 this 指代该对象。同时this也可以省略,也就是在函数快里面可以直接使用对象的属性活方法。返回值为函数块的最后一行或指定return表达式。
147 0
|
Java Android开发 Kotlin
kotlin 之几个常见的内联函数(一)
kotlin现在是Android 开发的主流语言,因为代码简洁,特别是一些内联函数的使用,跟java的比起来,代码量少却可以实现同样的功能。 接下来就来讲讲kotlin中常见的内联函数,他们在功能上,使用上都大同小异。分别是let函数、with函数、run函数、apply函数、also函数。一个一个来讲解。 从功能返回值上看,let、with、run归为一类,apply和also为一类
207 0