Menu
Coddy logo textTech

Trabalhando com Arquivos

Parte da seção Programação Orientada a Objetos do Journey de Kotlin da Coddy. Lição 1 de 57.

Programas reais são divididos em vários arquivos. Todos os arquivos .kt de um programa Kotlin são compilados juntos, portanto uma função ou classe declarada em um arquivo pode ser usada em qualquer outro arquivo do mesmo pacote sem um import:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"

// Main.kt
fun main() {
    println(greeting("Ada"))
}

Executar este programa imprime Hello, Ada!: main em Main.kt chama a função que está em Greeting.kt.

Um arquivo Kotlin contém apenas declarações: classes, funções, propriedades. Instruções como println(...) devem estar dentro de uma função. O programa começa em fun main(), que, por convenção, fica em Main.kt:

// Greeting.kt
fun greeting(name: String) = "Hello, $name!"
// println("hi")            // erro: instruções devem estar dentro de uma função

// Main.kt
fun main() {
    val name = readLine() ?: "friend"
    println(greeting(name))
}

O layout usual é uma classe por arquivo, nomeado de acordo com a classe: Dog.kt contém Dog, Account.kt contém Account. Nos desafios desta seção, seu código vai nesses arquivos, e Main.kt contém o código de entrada/saída fornecido, que geralmente você não pode editar. O editor mostra cada arquivo como uma aba.

Dog.kt        // class Dog(...) { ... }
Account.kt    // class Account { ... }
Main.kt       // fun main(): lê a entrada e imprime os resultados

A visibilidade também segue os arquivos. Uma declaração de nível superior marcada como private é visível apenas dentro do próprio arquivo, enquanto o padrão, public, torna-a visível em todos os arquivos:

// Secret.kt
private const val SALT = "x7"        // somente este arquivo pode vê-lo
fun hashed(s: String) = s + SALT

// Main.kt
fun main() {
    println(hashed("pw"))            // ok: hashed é público
    // println(SALT)                 // erro: SALT é privado em Secret.kt
}
challenge icon

Desafio

Fácil

O programa tem dois arquivos. main em Main.kt lê nomes e imprime o resultado de greeting(name). Complete greeting em Greeting.kt para que ele retorne Hello, Ada! para o nome Ada, ou Hello, friend! quando o nome estiver vazio.

Seu código deve ficar em Greeting.kt. Main.kt contém o código de entrada/saída fornecido e não pode ser editado.

Experimente você mesmo

fun main() {
    // Código de entrada/saída fornecido: mantenha-o como está
    val input = generateSequence(::readLine).toList()
    for (name in input) println(greeting(name))
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Playground de Kotlin