Trabajar con archivos
Parte de la sección Programación orientada a objetos del Journey de Swift de Coddy. Lección 1 de 57.
Los programas reales se dividen en varios archivos. En Swift, todos los archivos .swift de una aplicación se compilan juntos en un único módulo, por lo que una función o un tipo declarado en un archivo se puede usar en cualquier otro archivo sin necesidad de importarlo:
// Greeting.swift
func greeting(for name: String) -> String {
"Hello, \(name)!"
}
// main.swift
print(greeting(for: "Ada"))Al ejecutar este programa, se imprime Hello, Ada!: main.swift llama a la función que está en Greeting.swift.
Solo un archivo puede contener instrucciones de nivel superior, código que se ejecuta por sí solo fuera de cualquier función o tipo. Ese archivo es main.swift, y es donde comienza el programa. Los demás archivos solo contienen declaraciones:
// Greeting.swift
func greeting(for name: String) -> String { "Hello, \(name)!" }
// print("hi") // error: aquí no se permiten instrucciones en el nivel superior
// main.swift
let name = readLine() ?? "friend" // el código de nivel superior está permitido en main.swift
print(greeting(for: name))El diseño habitual es un tipo por archivo, con el nombre del tipo: Dog.swift contiene Dog, Account.swift contiene Account. En los desafíos de esta sección, tu código va en esos archivos y main.swift contiene el código de entrada/salida proporcionado, que normalmente no puedes editar. El editor muestra cada archivo en una pestaña.
Dog.swift // class Dog { ... }
Account.swift // struct Account { ... }
main.swift // lee la entrada e imprime los resultadosEl control de acceso también se aplica a los archivos. private y fileprivate ocultan una declaración de los demás archivos, mientras que el valor predeterminado, internal, la hace visible en todos los archivos del módulo:
// Secret.swift
fileprivate let salt = "x7" // solo este archivo puede acceder a él
func hashed(_ s: String) -> String { s + salt }
// main.swift
print(hashed("pw")) // correcto: hashed es internal
// print(salt) // error: salt es fileprivateDesafío
FácilEl programa tiene dos archivos. main.swift lee un nombre e imprime el resultado de greeting(for:). Completa greeting(for:) en Greeting.swift para que devuelva Hello, Ada! para el nombre Ada, o Hello, friend! cuando el nombre esté vacío.
Tu código va en Greeting.swift. main.swift contiene el código de entrada/salida proporcionado y no se puede editar.
Pruébalo tú mismo
// Código de entrada/salida proporcionado: mantenlo tal como está
var input: [String] = []
while let line = readLine() { input.append(line) }
for name in input { print(greeting(for: name)) }
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
1Clases y objetos
Trabajar con archivosDefinir clasesMétodos y selfInicializadoresLas clases son referenciasRepaso: tarjeta de biblioteca4Encapsulación
Control de accesoSolo lectura desde fueraProtección del estadoInicializadores que pueden fallarRepaso - Cuenta bancaria7Polimorfismo y genéricos
PolimorfismoConversión de tiposFunciones genéricasTipos genéricosRepaso - Calculadora de formas2Structs y tipos por valor
StructsSemántica de valoresMétodos mutablesStruct o claseRepaso - elemento del inventario5Herencia
SubclasesSobrescritura de métodosInicializadores y superfinal y jerarquíasRepaso: jerarquía de empleados8Protocolos estándar
CustomStringConvertibleEquatableComparableHashableRepaso - Ordenamiento personalizado11Proyecto: Gestión de bibliotecas
Libros y miembrosPréstamo de librosPractica por tu cuenta: Playground de Swift