一起养成写作习气!这是我参加「日新计划 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支撑两个参数,看下输出:

你需要懂的Kotlin开发技巧之七

2.use扩展函数

平常从文件输出输入流中进行读写,需求在读写完毕之后调用close方法封闭输出或输入流,防止产生反常,可是要求是要求,程序开发的时分还有有概率漏写的。

所以kotlin供给了一个user扩展方法协助咱们封闭流,先看下运用:

File("").outputStream().use {
}

运用use后就不需求程序手动封闭流了,看下use源码:

你需要懂的Kotlin开发技巧之七

同理,读写数据库中的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,能够外部进行传参创立类的目标