Menu
Coddy logo textTech

파일 다루기

Coddy Swift 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 1번째.

실제 프로그램은 여러 파일로 나뉩니다. Swift에서는 앱의 모든 .swift 파일이 하나의 모듈로 함께 컴파일되므로, 한 파일에서 선언된 함수나 타입을 import 없이 다른 모든 파일에서 사용할 수 있습니다:

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

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

이 프로그램을 실행하면 Hello, Ada!가 출력됩니다. main.swift가 Greeting.swift에 있는 함수를 호출하기 때문입니다.

단 하나의 파일만 최상위 문, 즉 어떤 함수나 타입 외부에서 자체적으로 실행되는 코드를 포함할 수 있습니다. 그 파일은 main.swift이며, 프로그램이 시작되는 곳입니다. 다른 파일에는 선언만 포함됩니다:

// Greeting.swift
func greeting(for name: String) -> String { "Hello, \(name)!" }
// print("hi")      // error: 여기 최상위 레벨에서는 문이 허용되지 않습니다

// main.swift
let name = readLine() ?? "friend"   // main.swift에서는 최상위 코드가 괜찮습니다
print(greeting(for: name))

일반적인 구성은 파일당 하나의 타입을 두고, 타입 이름을 따서 파일 이름을 지정하는 것입니다. Dog.swift에는 Dog이 들어 있고, Account.swift에는 Account가 들어 있습니다. 이 섹션의 과제에서는 코드를 해당 파일에 작성하고, main.swift에는 제공된 입력/출력 코드가 들어 있으며, 이 코드는 일반적으로 수정할 수 없습니다. 편집기에는 각 파일이 탭으로 표시됩니다.

Dog.swift        // class Dog { ... }
Account.swift    // struct Account { ... }
main.swift       // 입력을 읽고 결과를 출력합니다

접근 제어는 파일에도 적용됩니다. private와 fileprivate는 다른 파일에서 선언에 접근하지 못하도록 숨기는 반면, 기본값인 internal은 모듈의 모든 파일에서 선언을 볼 수 있게 합니다:

// Secret.swift
fileprivate let salt = "x7"          // 이 파일만 볼 수 있음
func hashed(_ s: String) -> String { s + salt }

// main.swift
print(hashed("pw"))                  // 괜찮음: hashed는 internal
// print(salt)                       // 오류: salt는 fileprivate
challenge icon

챌린지

쉬움

프로그램에는 두 개의 파일이 있습니다. main.swift는 이름을 읽고 greeting(for:)의 결과를 출력합니다. Greeting.swift에서 greeting(for:)을 완성하여 이름이 Ada일 때 Hello, Ada!를 반환하고, 이름이 비어 있을 때는 Hello, friend!를 반환하도록 하세요.

코드는 Greeting.swift에 작성합니다. main.swift에는 제공된 입력/출력 코드가 포함되어 있으며 편집할 수 없습니다.

직접 해보기

// 제공된 입력/출력 코드: 그대로 유지하세요
var input: [String] = []
while let line = readLine() { input.append(line) }
for name in input { print(greeting(for: name)) }
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: Swift 플레이그라운드