Kotlin协程
协程是什么
协程让异步逻辑同步化,杜绝回调地狱。协程最核心的点就是,函数或者一段程序能够被挂起,稍后再在挂起的位置恢复。kotlin中的协程基于线程,它是轻量级线程。
挂起与恢复
协程新增了suspend和resume:
- suspend:也称为挂起或暂停,用于暂停执行当前协程,并保存所有局部变量;
- resume:用于让已暂停的协程从其暂停处继续执行。
使用suspend关键字修饰的函数叫作挂起函数。挂起函数只能在协程体内或其他挂起函数内调用。
协程让异步逻辑同步化,杜绝回调地狱。协程最核心的点就是,函数或者一段程序能够被挂起,稍后再在挂起的位置恢复。kotlin中的协程基于线程,它是轻量级线程。
协程新增了suspend和resume:
使用suspend关键字修饰的函数叫作挂起函数。挂起函数只能在协程体内或其他挂起函数内调用。
在kotlin中,用==
检查两个字符串中的字符是否匹配,用===
检查两个变量是否指向内存堆上同一对象。
fun main() {
val str1 = "Jason"
val str2 = "Jason"
println(str1 === str2) //输出true,因为字符串常量池
val str2 = "jason".capitalize()
println(str1 === str2) //输出false,因为capitalize方法创建了一个新的"Jason"
val str2 = "jason".capitalize().intern()
println(str1 === str2) //输出true,因为intern方法将capitalize方法创建的字符串放进了字符串常量池,并返回了字符串常量池中该字符串的引用
}
解构声明的后台实现就是声明component1、component2等若干个组件函数,让每个函数负责管理你想返回的一个属性数据,如果你定义一个数据类,它会自动为所有定义在主构造函数的属性添加对应的组件函数。
const val str = "aa,bb,cc"
fun main() {
val (a,b,c) = names.split(",") //输出aa bb cc
val (a) = names.split(",") //输出aa
val data = names.split(",") //输出[aa,bb,cc]
}
fun test(vararg str: String) {
println(str.size) //输出2
}
fun main() {
test("1", "2")
}