美文网首页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