기본 연관 형과 형 지정 오류
프로토콜 존재 형을 제한하고 Swift 6의 형 지정 오류 전파를 알아봅니다.
기본 연관 형과 형 지정 오류은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 제네릭 제약 조건과 where 절
- some 키워드를 사용한 불투명 형
- any를 사용한 존재 형과 형 삭제
- 기본 연관 형과 형 지정 오류