主要特点:
拓展属性及方法、协程、flow、委托、非空判断
拓展属性及方法:在不修改类 / 不继承类的情况下,向一个类添加新函数或者新属性,遵循开放闭合原则。本质是静态函数,静态函数的第一个参数是接收者类型,调用扩展时不会创建适配对象或者任何运行时的额外消耗。在 Java 中,我们只需要像调用普通静态方法那样调用扩展即可。
public inline fun<T>T.apply(block:T.() ->Unit): T {
block()
return this
}
public inline fun<T>T.also(block: (T) ->Unit): T {
block(this)
return this
}
这两个方法都是任意类的拓展方法,不同点在于apply的block是拓展方法,所以里面有接收对象的this引用,而also里的block是个参数是接收对象的高阶函数,所以里面就有it代指。
协程:从宏观上来说,它像是线程的封装,从微观上来说,它是轻量级的线程。线程是系统资源,面向的是系统层级,而协程面向的是用户层。
协程主要的特点:调度灵活(切换上下文)、用同步代码实现异步逻辑
协程上下文是很多元素的集合,常见的有job、调度器,协程名字、异常捕获。
用withcontext()来切换线程,suspend关键字来实现同步代码实现异步逻辑
Flow流
委托
类委托、属性委托
语法相关