一起养成写作习气!这是我参加「日新计划 4 月更文挑战」的第15天,点击检查活动详情。
1.kotlin中的for循环
- 第一种
..
for (i in 0..5) {
println(i)
}
正序
输出 :0 1 2 3 4 5
,这是一个左闭右闭区间
- 第二种
until
for (i in 0 until 5) {
println(i)
}
正序
输出:0 1 2 3 4
,这是一个左闭右开区间
- 第三种
downTo
for (i in 5 downTo 0) {
println(i)
}
倒序
输出:5 4 3 2 1 0
,这是一个左闭右闭区间
- 第四种
step
这种是带步长的,比方:
for (i in 0 until 5 step 2) {
println(i)
}
输出:0 2 4
,能够看到步长设置为2就隔2输出
- 第五中
zip
for((i, j) in (1..5).zip(5..10)) {
println("$i -- $j")
}
zip
支撑两个参数,看下输出:
2.use
扩展函数
平常从文件输出输入流中进行读写,需求在读写完毕之后调用close
方法封闭输出或输入流,防止产生反常,可是要求是要求,程序开发的时分还有有概率漏写的。
所以kotlin供给了一个user
扩展方法协助咱们封闭流,先看下运用:
File("").outputStream().use {
}
运用use
后就不需求程序手动封闭流了,看下use
源码:
同理,读写数据库中的cursor
也支撑运用use
。
3.密封类sealed class
密封类的界说如下:
sealed class Kit {
data class H(val name: String = "")
data class O(val age: Int = 0)
data class L(val show: Boolean = false)
}
其实密封类和抽象类、枚举十分像,可是有两个十分明显差异于抽象类、枚举的优点:
- 类结构层次化(相比较抽象类)
抽象类的具体完成类能够界说在包内的各个方位,十分不方便管理,而密封类具有层次化结构,即
密封类的子类只能和密封类界说在同一个类文件中
。当然,kotlin1.4之后的版别不会约束这么严厉
- 子类目标支撑动态创立(相比较枚举)
java完成单例最安全的方式便是使用枚举完成。枚举声明的每个元素内容都是固定的,无法经过外部传入参数。而
密封类的子类能够声明为object,这个效果就和枚举元素一样,也能够声明为普通的class,能够外部进行传参创立类的目标