Trabajar con archivos
Parte de la sección Programación orientada a objetos del Journey de Kotlin de Coddy. Lección 1 de 57.
Los programas reales se dividen en varios archivos. Todos los archivos .kt de un programa de Kotlin se compilan juntos, por lo que una función o clase declarada en un archivo puede utilizarse en cualquier otro archivo del mismo paquete sin una importación:
// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// Main.kt
fun main() {
println(greeting("Ada"))
}Al ejecutar este programa se imprime Hello, Ada!: main en Main.kt llama a la función que se encuentra en Greeting.kt.
Un archivo de Kotlin contiene únicamente declaraciones: clases, funciones y propiedades. Las instrucciones como println(...) deben estar dentro de una función. El programa comienza en fun main(), que por convención se encuentra en Main.kt:
// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi") // error: las sentencias deben estar dentro de una función
// Main.kt
fun main() {
val name = readLine() ?: "friend"
println(greeting(name))
}La disposición habitual es una clase por archivo, con el nombre de la clase: Dog.kt contiene Dog y Account.kt contiene Account. En los desafíos de esta sección, tu código va en esos archivos y Main.kt contiene el código de entrada/salida proporcionado, que normalmente no puedes editar. El editor muestra cada archivo como una pestaña.
Dog.kt // class Dog(...) { ... }
Account.kt // class Account { ... }
Main.kt // fun main(): lee la entrada e imprime los resultadosLa visibilidad también se aplica a los archivos. Una declaración de nivel superior marcada como private solo es visible dentro de su propio archivo, mientras que el valor predeterminado, public, hace que sea visible en todos los archivos:
// Secret.kt
private const val SALT = "x7" // solo este archivo puede verlo
fun hashed(s: String) = s + SALT
// Main.kt
fun main() {
println(hashed("pw")) // bien: hashed es público
// println(SALT) // error: SALT es privado en Secret.kt
}Desafío
FácilEl programa tiene dos archivos. main en Main.kt lee nombres e imprime el resultado de greeting(name). Completa greeting en Greeting.kt para que devuelva Hello, Ada! para el nombre Ada, o Hello, friend! cuando el nombre esté vacío.
Tu código va en Greeting.kt. Main.kt contiene el código de entrada/salida proporcionado y no se puede editar.
Pruébalo tú mismo
fun main() {
// Código de entrada/salida suministrado: déjalo tal como está
val input = generateSequence(::readLine).toList()
for (name in input) println(greeting(name))
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación orientada a objetos
1Clases y objetos
Trabajar con archivosDefinir clasesConstructores primariosBloques init y validaciónConstructores secundariosRepaso - Tarjeta de biblioteca4Herencia
Clases abiertas y subclasesSobrescritura de miembrossuper y constructoresClases abstractasRepaso: directorio del personal2Propiedades y encapsulación
Accesores personalizadosModificadores de visibilidadSetters privadoslazy y lateinitRepaso: cuenta bancaria5Interfaces
Declaración de interfacesMétodos predeterminadosInterfaces múltiplesInterfaces como tiposRepaso: métodos de pago8Genéricos
Funciones genéricasClases genéricasRestricciones de tiposVariancia con in y outRepaso - Cola de prioridad11Proyecto: Gestión de biblioteca
Libros y miembrosPréstamo de librosPractica por tu cuenta: Playground de Kotlin