Menu
CoddyTech

Trabalhando com Arquivos

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

Programas reais são divididos em vários arquivos. Em Swift, todos os arquivos .swift de um app são compilados juntos em um único módulo, então uma função ou tipo declarado em um arquivo pode ser usado em qualquer outro arquivo sem um import:

// Greeting.swift
func greeting(for name: String) -> String {
    "Hello, \(name)!"
}

// main.swift
print(greeting(for: "Ada"))

Ao executar este programa, Hello, Ada! é exibido: main.swift chama a função que está em Greeting.swift.

Apenas um arquivo pode conter instruções de nível superior, código que é executado por conta própria fora de qualquer função ou tipo. Esse arquivo é main.swift, e é nele que o programa começa. Os outros arquivos contêm apenas declarações:

// Greeting.swift
func greeting(for name: String) -> String { "Hello, \(name)!" }
// print("hi")      // erro: instruções não são permitidas no nível superior aqui

// main.swift
let name = readLine() ?? "friend"   // código no nível superior é permitido em main.swift
print(greeting(for: name))

O layout usual é um tipo por arquivo, com o nome do tipo: Dog.swift contém Dog, Account.swift contém Account. Nos desafios desta seção, seu código fica nesses arquivos e main.swift contém o código de entrada/saída fornecido, que geralmente você não pode editar. O editor mostra cada arquivo em uma aba.

Dog.swift        // class Dog { ... }
Account.swift    // struct Account { ... }
main.swift       // lê a entrada e imprime os resultados

O controle de acesso também se aplica aos arquivos. private e fileprivate ocultam uma declaração de outros arquivos, enquanto o padrão, internal, a torna visível em todos os arquivos do módulo:

// Secret.swift
fileprivate let salt = "x7"          // somente este arquivo pode acessá-lo
func hashed(_ s: String) -> String { s + salt }

// main.swift
print(hashed("pw"))                  // ok: hashed é internal
// print(salt)                       // erro: salt é fileprivate
challenge icon

Desafio

Fácil

O programa tem dois arquivos. main.swift lê um nome e imprime o resultado de greeting(for:). Complete greeting(for:) em Greeting.swift para que retorne Hello, Ada! para o nome Ada, ou Hello, friend! quando o nome estiver vazio.

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

Experimente você mesmo

// Código de entrada/saída fornecido: mantenha-o como está
var input: [String] = []
while let line = readLine() { input.append(line) }
for name in input { print(greeting(for: 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 Swift