美文网首页Kotlin
Kotlin系列之扩展函数

Kotlin系列之扩展函数

作者: Natchi | 来源:发表于2019-04-11 21:22 被阅读0次

扩展函数是怎么产生的

当现有的Java项目中集成Kotlin,有可能出现现有的代码不能转成Kotlin,但是需要使用到这些API的时候,这个时候,扩展函数就派上用场了。

听起来感觉挺懵懂的,那么我们写一个获取字符串最后一个字符的扩展函数
首先创建一个DemoKotlin.kt

package com.natchi.wanandroid.demo
fun String.lastChar(): Char {
    
    return this.get(this.length - 1)
}

我们来看看扩展函数的整体结构

  1. 首先该函数是在类的外面
  2. 接受者类型,确实哪种类型可以调用该函数
  3. 接受者对象,用来调用这个扩展函数的一个实例

那么我们来调用一下这个函数,输出的是g,哈哈,证明这个函数可以使用

 @JvmStatic
    fun main(args: Array<String>) {
     println("string".lastChar())
    }
---- IntelliJ IDEA coverage runner ---- 
sampling ...
include patterns:
exclude patterns:
g

Process finished with exit code 0

Kotlin的常用的扩展函数let、with、run、apply、also等等

对于这些函数,我觉得只要关心输入、输出是什么,即可用好

我们挑apply函数来讲吧,结合Android开发,其实其他的也差不多一个样子,

@kotlin.internal.InlineOnly
public inline fun <T> T.apply(block: T.() -> Unit): T {
    contract {
        callsInPlace(block, InvocationKind.EXACTLY_ONCE)
    }
    block()
    return this
}

T接受者类型,返回T接受者对象,意思就是哪个实例调用,就返回该实例

例子一、给bean赋值
 val infoBean = InfoItemBean().apply {this:InfoItemBean
            name = "justin"
            address = "china"
            phoneNumber = "1234"
        }
例子二、给Recyclerview初始化配置
 recycler_view.apply {
            layoutManager = mLayoutManager
            adapter = mAdapter
            itemAnimator = null
        }

等等,很多场景都可以用到,我这就不举例子了,多看看别人写的Kotlin开源框架,可以发现很多不一样的知识,后面还会讲到更多Kotlin有趣的东西

相关文章

网友评论

    本文标题:Kotlin系列之扩展函数

    本文链接:https://www.haomeiwen.com/subject/jhxfiqtx.html