高阶函数
高阶使用
源码中的高阶函数
T.()和(T)的区别
调用myLet是把T当作参数传入,it就是传入的这个T,
myLet2中,T.()相当于把this传了过去,在this的环境中可以直接使用length方法,而myLet中必须通过it来调用
高阶的一些使用例子
lamda用来定义线程需要执行的方法,其他参数用来控制执行,赋上了默认值
自由控制的轮询器,counts控制次数,mm是需要执行的方法
KT范型
上下限, super String extends String
泛型读取模式
<? extends FuClass> 只能读取不能修改,而且读取时只能用FuClass来接收,因为不能保证lists里面装的是FuClass的什么子类对象,但是都可以等于他们的父类
<? super ZiClass> 只能修改不能读取 只能add 子类,super里面父类不能确定,但是ZiClass都能转化为父类
kotlin中关键字 in=<? super ZiClass> out=<? extends FuClass>
即 in标识的只能修改不能读取,out只能读取不能修改
协程(使用)
runBlocking进入到协程环境,launch启动协程,Dispatchers.IO(切换到IO线程)
非阻塞式自由切换线程
代替handler进行切换线程,主线程UI的绘制