Kotlin 协程-笔记

  • 协程不是线程,
  • 协程是为了更好的处理代码逻辑,线程是为了更好的利用 CPU 资源。
  • 在协程中可以使用线程
  • 协程可以暂停、停止和恢复。
  • 协程通过‘挂起函数’来支持,通常使用匿名的挂起函数。(如:suspend 修饰的 Lambda 表达式)
  • 协程挂起和调度非常的轻量,但协程的创建需要一定的开销, 启动协程比启动线程更慢.

协同程序完全是通过编译技术实现(不需要 VM 或 OS 端的支持),并且通过代码转换进行暂停。基本上,每个挂起函数转换为状态机,其中状态对应于挂起调用。在暂停之前,下一个状态存储在编译器生成类的相关的局部变量字段中。在恢复该协程后,恢复局部变量并且状态机在暂停后立即从状态继续


Kotlin 内联函数-笔记

内联函数 inline

  • 在高阶函数中,每一个函数都是一个对象
  • 内存分配和虚拟调用会降低程序的运行效率
  • 印象中好像 C++ 有内联函数的概念,ㄟ( ▔, ▔ )ㄏ

内联函数的 Lambda 表达式可以解决这样的问题。

定义为内联的函数,在编译时放到调用处进行编译运行, 而不是函数所在的地方编译运行

Kotlin 函数复合-笔记

函数复合

假设 有两个函数:

  • 传入一个 Int 参数,对这个参数 + 5 ,最终返回结果 fun1 = { i : Int -> i + 5 }
  • 传入一个 Int 参数,对这个参数 2 ,最终返回结果 fun2 = { i : Int -> i 2 }

需求: 随便传一个值给 fun1 ,然后将 fun1 的结果 传给 fun2 ,计算最终的结果


Kotlin 关键字-笔记

val 只读属性

var 可变属性

const 编译时常量

  • 编译时常量,需要满足以 String 或基本类型进行初始化
  • 没有自定义 getter 对象成员或顶级(Top#level)

constructor 构造函数

  • 一个类可以有一个主构造函数以及多个二级构造函数
  • 如果主构造函数没有 注解 或者 可见性 说明,constructor 关键字是可以省略

Kotlin 构造函数-笔记

构造函数

一个类可以有一个主构造函数和多个次构造函数

主构造函数

  • 声明在类名后面,用 constructor 关键字修饰
    1
    2
    3
    class Person 注解 或 可见性修饰符 constructor(主构造函数参数){
    //有 注解 或 可见性修饰符
    }