kotlin语法糖

kotlin

  • with

    fun  with(receiver: T, f: T.() -> R): R = receiver.f()
    

    with方法传一个参数和一个lambda 拥有第一个参数的上下文环境 返回最后一行

    with的方式和apply还有let不一样 是方法 不是扩展 感觉是apply和let的组合体

  • apply

    fun  T.apply(f: T.() -> Unit): T { f(); return this }
    

    调用某对象的apply方法 在函数范围内 可以调用任意这个对象的方法 并将这个对象返回

  • run

    fun  T.run(f: T.() -> R): R = f()
    

    和apply很像 不过返回的是最后一行 而不是当前对象 和let区别 闭包没有参数 可以使用this

  • let

    fun  T.let(f: (T) -> R): R = f(this)
    

    调用某对象的let方法 会将该对象传入函数体重 it调用 返回值是函数的最后一行

  • inline

    将函数体直接拷贝到调用处 减少函数调用 一般内联函数都很短

    内联的函数在编译的时候会被进行代码替换 因此没有函数属性 所以内联函数只允许传递给内联函数

    内联函数可以执行return 而非内联只能进行局部返回

  • noline

    声明不会内联

  • crossline

    解决匿名函数不允许return 内联函数允许return 互相冲突导致 所以加上crossline关键字表示一定不会使用return关键字

  • data class

    数据类 会自动生成equals toString等方法

  • sealed class

    密封类 when方法必须实现所有的case

  • object class

    单例类

  • compain object{}

    伴生对象

  • operator fun plus(obj:Obj):Obj{}

    重载函数 重载Obj的plus方法

你可能感兴趣的:(kotlin语法糖)