Prenez l'habitude d'écrire ensemble ! C'est le 15ème jour de ma participation au "Nuggets Daily New Plan·April Update Challenge", cliquez pour voir les détails de l'événement .
1. boucle for en kotlin
- La première
..
for (i in 0..5) {
println(i)
}
复制代码
正序
Sortie : 0 1 2 3 4 5
, qui est un intervalle fermé à gauche-fermé à droite
- la deuxième
until
for (i in 0 until 5) {
println(i)
}
复制代码
正序
Sortie : 0 1 2 3 4
, qui est un intervalle fermé à gauche et ouvert à droite
- le troisième
downTo
for (i in 5 downTo 0) {
println(i)
}
复制代码
倒序
Sortie : 5 4 3 2 1 0
, qui est un intervalle fermé à gauche-fermé à droite
- le quatrième
step
C'est avec une taille de pas, telle que :
for (i in 0 until 5 step 2) {
println(i)
}
复制代码
Sortie : 0 2 4
, vous pouvez voir que la taille du pas est définie sur 2 et que la sortie est tous les 2
- Cinquième collège
zip
for((i, j) in (1..5).zip(5..10)) {
println("$i -- $j")
}
复制代码
zip
Deux paramètres sont pris en charge, voir la sortie :
2. use
Fonction d'extension
Habituellement lu et écrit à partir de la sortie du fichier et du flux d'entrée, vous devez appeler la méthode pour fermer la sortie ou le flux d'entrée une fois la lecture et l'écriture terminées pour close
éviter une exception, mais l'exigence est une exigence, et il y a une probabilité de écriture manquante lors de l'élaboration du programme.
Kotlin fournit donc une user
méthode d'extension pour nous aider à fermer le flux, regardez d'abord l'utilisation :
File("").outputStream().use {
}
复制代码
Après utilisation use
, il n'est pas nécessaire que le programme ferme manuellement le flux. Regardez le use
code source :
De la même manière, la base de données en lecture-écriture cursor
prend également en charge l'utilisation de use
.
3. Scellésealed class
Une classe scellée est définie comme suit :
sealed class Kit {
data class H(val name: String = "")
data class O(val age: Int = 0)
data class L(val show: Boolean = false)
}
复制代码
En fait, les classes scellées sont très similaires aux classes abstraites et aux énumérations, mais il y a deux avantages qui sont significativement différents des classes abstraites et des énumérations :
- Hiérarchie de la structure des classes (par rapport aux classes abstraites)
La classe d'implémentation concrète de la classe abstraite peut être définie à divers endroits dans le package, ce qui est très peu pratique à gérer, tandis que la classe scellée a une structure hiérarchique, c'est-à-dire
密封类的子类只能和密封类定义在同一个类文件中
. Bien sûr, les versions après kotlin 1.4 ne seront pas aussi restrictives
- Les objets de sous-classe prennent en charge la création dynamique (par rapport à l'énumération)
Le moyen le plus sûr d'implémenter un singleton en Java consiste à utiliser une implémentation d'énumération. Le contenu de chaque élément de la déclaration d'énumération est fixe et les paramètres ne peuvent pas être transmis en externe. et
密封类的子类可以声明为object,这个效果就和枚举元素一样,也可以声明为普通的class,可以外部进行传参创建类的对象