美文网首页kotlin
67.apply函数

67.apply函数

作者: 写代码的向日葵 | 来源:发表于2019-10-06 02:31 被阅读0次

1.apply函数

fun main(args: Array<String>) {
    val list: ArrayList<String>? = arrayListOf<String>("美女", "范冰冰", "柳岩")

    //第一个apply
    list?.apply {
        add("刘诗诗")
        add("张三")
        add("李四")
    }

    Person().set {
        name = "李四"
    }
}

fun <T> T.set(block: T.() -> Unit): T {
    block.invoke(this)//this就表示调用该方法的 T 的对象实例
    return this
}

class Person {
    var name = "张三"
}

  • 源码分析阶段
image.png
  • 可以看到apply函数是任何对象上扩展函数,不一样的是,block的类型是T.(),说明block所对应的函数是带接收者的函数字面值的,加上T.()说明是定义在对象里面的函数(扩展函数),函数里面可以访问T的字段或者方法。比如上面的listadd函数,所以可以直接在 apply内部进行add操作
  • 比如上面我们仿照apply函数写的set函数,然后也可以和apply函数一样使用

2.总结:

  • 任意类型都有apply函数扩展
  • apply参数是一个函数 T.() -> unit带接收者的函数字面值
  • lambda表达式this代表调用的对象
  • 在lambda表达式里可以访问对象的方法
  • apply函数返回值就是调用者本身

相关文章

  • 67.apply函数

    1.apply函数 源码分析阶段 image.png可以看到apply函数是任何对象上扩展函数,不一样的是,blo...

  • Excel(三)

    AND函数 OR函数 NOT函数 IF函数 频率分析函数FREQUENCY

  • if、else if、for、while、repeat函数

    ①if函数 ②else if函数 ③for函数 ④while函数 ⑤repeat函数

  • strsplit、mapply、paste、match函数

    strsplit函数 mapply函数 strsplit函数 mapply函数 paste函数 match函数 第...

  • Oracle中常用函数(SQL)

    Oracle函授有以下几个分类:数字函数、字符函数、日期函数、转换函数、集合函数、分析函数 数字函数: 字符函数:...

  • MySQL函数

    字符函数 数字运算函数 比较运算符和函数 日期时间函数 信息函数 聚合函数 加密函数 流程函数

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

  • Python之函数

    课程大纲 函数定义 函数的参数 函数的返回值 高阶函数 函数作用域 递归函数 匿名函数 内置函数 函数式编程 将函...

  • 函数基本知识

    函数 函数的定义: def 函数名() 函数的调用:函数名() #不能将函数调用放在函数定义上方 函数的文档注...

  • 积分表——不定期更新

    基本初等函数包括: 常函数: 幂函数 指数函数 对数函数 三角函数 反三角函数 I、反函数Ⅱ、复合函数:初等函数(...

网友评论

    本文标题:67.apply函数

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