¡Acostúmbrate a escribir juntos! Este es el día 15 de mi participación en el "Desafío de actualización de abril del nuevo plan diario de Nuggets", haga clic para ver los detalles del evento .
1. bucle for en kotlin
- El primero
..
for (i in 0..5) {
println(i)
}
复制代码
正序
Salida: 0 1 2 3 4 5
, que es un intervalo cerrado por la izquierda y cerrado por la derecha
- el segundo
until
for (i in 0 until 5) {
println(i)
}
复制代码
正序
Salida: 0 1 2 3 4
, que es un intervalo cerrado por la izquierda y abierto por la derecha
- El tercero
downTo
for (i in 5 downTo 0) {
println(i)
}
复制代码
倒序
Salida: 5 4 3 2 1 0
, que es un intervalo cerrado por la izquierda y cerrado por la derecha
- el cuarto
step
Esto es con un tamaño de paso, como:
for (i in 0 until 5 step 2) {
println(i)
}
复制代码
Salida: 0 2 4
puede ver que el tamaño del paso se establece en 2 y la salida es cada 2
- Quinta Escuela Intermedia
zip
for((i, j) in (1..5).zip(5..10)) {
println("$i -- $j")
}
复制代码
zip
Se admiten dos parámetros, consulte el resultado:
2. use
Función de extensión
Por lo general, lea y escriba desde el flujo de salida y entrada del archivo, debe llamar al método para cerrar el flujo de salida o entrada después de que se complete la lectura y escritura para close
evitar una excepción, pero el requisito es un requisito, y existe la probabilidad de Falta escritura durante el desarrollo del programa.
Entonces, kotlin proporciona un user
método de extensión para ayudarnos a cerrar la transmisión, primero observe el uso:
File("").outputStream().use {
}
复制代码
Después de su uso use
, no es necesario que el programa cierre manualmente la transmisión. Mire el use
código fuente:
De la misma manera, la base de datos de lectura y escritura cursor
también admite el uso de use
.
3. Selladosealed class
Una clase sellada se define de la siguiente manera:
sealed class Kit {
data class H(val name: String = "")
data class O(val age: Int = 0)
data class L(val show: Boolean = false)
}
复制代码
De hecho, las clases selladas son muy similares a las clases y enumeraciones abstractas, pero hay dos ventajas que son significativamente diferentes de las clases y enumeraciones abstractas:
- Jerarquía de estructura de clases (en comparación con las clases abstractas)
La clase de implementación concreta de la clase abstracta se puede definir en varias ubicaciones en el paquete, lo cual es muy inconveniente de administrar, mientras que la clase sellada tiene una estructura jerárquica, es decir,
密封类的子类只能和密封类定义在同一个类文件中
. Por supuesto, las versiones posteriores a Kotlin 1.4 no serán tan restrictivas.
- Los objetos de subclase admiten la creación dinámica (en comparación con la enumeración)
La forma más segura de implementar un singleton en Java es usar una implementación de enumeración. El contenido de cada elemento de la declaración de enumeración es fijo y los parámetros no se pueden pasar de forma externa. y
密封类的子类可以声明为object,这个效果就和枚举元素一样,也可以声明为普通的class,可以外部进行传参创建类的对象