Menu
Coddy logo textTech

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. No Swift, cada arquivo .swift de um aplicativo é compilado junto em um único módulo, portanto uma função ou tipo declarado em um arquivo pode ser usado em qualquer outro arquivo sem uma importação:

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

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

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

Apenas um arquivo pode conter instruções de nível superior, ou seja, 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 de nível superior é permitido em main.swift
print(greeting(for: name))

O layout usual é um tipo por arquivo, nomeado de acordo com o tipo: Dog.swift contém Dog, Account.swift contém Account. Nos desafios desta seção, seu código vai 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 como 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 vê-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 ele retorne Hello, Ada! para o nome Ada, ou Hello, friend! quando o nome estiver vazio.

Seu código deve ser colocado 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