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 resultadosA 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
}Desafio
FácilO 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))
}
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
1Classes e Objetos
Trabalhando com ArquivosDefinindo ClassesConstrutores PrimáriosBlocos init e ValidaçãoConstrutores SecundáriosRecapitulação - Cartão da Biblioteca4Herança
Classes Abertas e SubclassesSobrescrevendo Membrossuper e ConstrutoresClasses AbstratasRevisão - Diretório de Funcionários2Propriedades e Encapsulamento
Acessores PersonalizadosModificadores de VisibilidadeSetters Privadoslazy e lateinitRevisão - Conta Bancária5Interfaces
Declarando InterfacesMétodos PadrãoMúltiplas InterfacesInterfaces como TiposRecapitulação - Métodos de Pagamento8Genéricos
Funções genéricasClasses genéricasRestrições de tipoVariância com in e outRecapitulação - Fila de prioridade11Projeto: Gerenciamento de Biblioteca
Livros e MembrosEmpréstimo de LivrosPratique por conta própria: Playground de Kotlin