Swift Academy · 강의

기본 연관 형과 형 지정 오류

프로토콜 존재 형을 제한하고 Swift 6의 형 지정 오류 전파를 알아봅니다.

레슨 4/413개 단계

기본 연관 형과 형 지정 오류은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

주요 연관 타입

Swift 5.7에서는 프로토콜에 주요 연관 타입을 지정하여 제약된 존재 타입을 사용할 수 있습니다.

protocol Container<Element> {
  associatedtype Element
  var items: [Element] { get }
}
struct Bag<T>: Container { var items: [T] = [] }

제약된 존재 타입

주요 연관 타입을 사용하면 any Container와 같이 존재 타입의 범위를 좁힐 수 있습니다.

func printItems(_ c: any Container<Int>) {
  c.items.forEach { print($0) }
}
printItems(Bag(items: [1,2,3]))

컬렉션 제약 존재 타입

Collection과 같은 표준 라이브러리 프로토콜은 이제 주요 연관 타입을 지원합니다.

func first(_ c: any Collection<String>) -> String? {
  c.first
}
print(first(["a","b","c"]) ?? "none")

형식 지정 오류 처리 소개

Swift 6에서는 형식 지정 오류 처리를 도입하여 함수가 던질 수 있는 정확한 오류 타입을 선언할 수 있습니다.

enum NetworkError: Error { case timeout, notFound }
func fetch() throws(NetworkError) -> Data {
  throw NetworkError.timeout
}

형식 지정 오류 처리에서 모든 경우를 처리하는 catch

오류 타입을 알고 있으므로 컴파일러가 모든 경우가 빠짐없이 처리되었는지 확인할 수 있습니다.

do {
  let _ = try fetch()
} catch .timeout {
  print("Timed out")
} catch .notFound {
  print("Not found")
}

프로토콜에서의 형식 지정 오류 처리

프로토콜 요구 사항에 던지는 오류의 타입을 지정하면 준수하는 타입이 정확한 오류 타입을 제공할 수 있습니다.

protocol Fetchable {
  associatedtype Failure: Error
  func fetch() throws(Failure) -> Data
}

형식 지정 오류 처리에서 다시 던지기

rethrows는 형식 지정 오류 처리에서도 작동하므로 바깥 함수가 내부 오류 타입을 전파합니다.

func map<T, E: Error>(_ array: [T], transform: (T) throws(E) -> T) throws(E) -> [T] {
  try array.map { try transform($0) }
}

주요 AT와 형식 지정 오류 처리 결합하기

두 기능을 함께 사용하여 정확하고 타입 안전한 API를 만들 수 있습니다.

protocol Repository<Model> {
  associatedtype Model
  associatedtype Failure: Error
  func fetchAll() throws(Failure) -> [Model]
}

불투명 형식 지정 오류 처리

throws(any Error)는 형식이 지정되지 않은 오류 처리와 같으며, 필요할 때 사용할 수 있는 우회 수단을 제공합니다.

func riskyOp() throws(any Error) {
  // can throw any error
}

마이그레이션: 형식이 지정되지 않은 오류 처리에서 형식 지정 오류 처리로

마이그레이션 방법은 기존에 오류를 던지는 함수에 구체적인 오류 타입을 단계별로 지정하는 것입니다.

// Before:
func load() throws -> Data { ... }
// After:
func load() throws(NetworkError) -> Data { ... }

형식 지정 오류 처리와 비동기 처리

형식 지정 오류 처리는 비동기 처리와 자연스럽게 결합됩니다. async throws(E)는 유효한 구문입니다.

func fetchAsync() async throws(NetworkError) -> Data {
  throw NetworkError.notFound
}

빠른 확인

프로토콜의 주요 연관 타입으로 무엇을 사용할 수 있습니까?

수업 요약

주요 연관 타입(Swift 5.7)을 사용하면 any Collection과 같은 제약된 존재 타입을 만들 수 있습니다. 형식 지정 오류 처리(Swift 6)를 사용하면 모든 경우를 처리하는 catch 블록을 위해 정확한 오류 타입을 선언할 수 있습니다. 두 기능 모두 타입 안전성과 API 표현력을 향상합니다.

무료로 시작

AI 튜터와 함께 Swift을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
122
레슨
409

자주 묻는 질문

“기본 연관 형과 형 지정 오류” 강의는 무료인가요?

네 — “기본 연관 형과 형 지정 오류” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“기본 연관 형과 형 지정 오류”에서 뭘 배우나요?

프로토콜 존재 형을 제한하고 Swift 6의 형 지정 오류 전파를 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Swift Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“기본 연관 형과 형 지정 오류” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 제네릭 제약 조건과 where 절
  2. some 키워드를 사용한 불투명 형
  3. any를 사용한 존재 형과 형 삭제
  4. 기본 연관 형과 형 지정 오류
← Swift Academy(으)로 돌아가기