Menu
Coddy logo textTech

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 resultados

La 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
}
challenge icon

Desafío

Fácil

El 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))
}
quiz iconPonte a prueba

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

Practica por tu cuenta: Playground de Kotlin