..
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支持两个参数,看下输出:
use
扩展函数平常从文件输出输入流中进行读写,需要在读写完毕之后调用close
方法关闭输出或输入流,防止产生异常,但是要求是要求,程序开发的时候还有有概率漏写的。
所以kotlin提供了一个user
扩展方法帮助我们关闭流,先看下使用:
File("").outputStream().use {
}
使用use后就不需要程序手动关闭流了,看下use源码:
同理,读写数据库中的cursor也支持使用use。
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,可以外部进行传参创建类的对象
阅读量:1108
点赞量:0
收藏量:0