주요 프로토콜

프로토콜 이름 설명
AnyObject 모든 클래스 타입이 암시적으로 준수하는 프로토콜
BinaryIntegar 스위프트의 정수 타입을 위한 프로토콜
CaseIterable 연관값이 없는 열거형인 경우에 해당 프로토콜을 준수하면 각각의 case를 순회할 수 있다. 순회할 case는 allCases 컬렉션으로 제공한다.
Codable Encodable과 Decodable 프로토콜의 합성 프로토콜이다. 해당 프로토콜을 준수하는 타입은 다른 표현방식으로 상호 변환할 수 있다. 예) 인스턴스 ↔ JSON 문자열
CodingKey 인코딩과 디코딩 키로 활용할 타입
Collection 요소에 인덱스와 서브스크립트로 접근할 수 있는 시퀀스
Comparable 관계 연산자(<, ≤, ≥, > 등)을 사용해 비교할 수 있는 타입
CustomStringConvertible 사용자 정의 텍스트 표현을 할 수 있는 타입으로 출력 스트림에 쓰일 수 있다.
Equatable ==, ≠ 연산자를 사용하여 값이 동일한지 판단할 수 있는 타입으로 사용자 정의 타입에서 해당 프로토콜을 채택하면 해당 타입을 위한 == 연산자를 구현해야 한다.
Error 던질 수 있는 오류를 표현하는 타입
FixedWidthInteger 정수 오버플로 연산을 지원하기 위한 프로토콜
Hashable 정수 해시 값을 제공하고 Dictionary의 키가 될 수 있는 타입
IteratorProtocol 시퀀스를 통한 반복을 위해 반복 상태와 인터페이스를 캡슐화
Sequence for-in 구문을 통해 반복될 수 있는 타입
SignedInteger 스위프트의 부호가 있는 정수 타입을 위한 프로토콜
SignedNumeric 뺄셈 연산이 가능하며 음의 표현이 가능하고 0으로 초기화될 수 있는 타입
TextOutputStreamable 텍스트 스트리밍 기능을 실행할 수 있는 타입으로 어떤 출력 스트림이든 쓰일 수 있다.
UnsignedInteger 스위프트의 부호가 없는 정수 타입을 위한 프로토콜

ExpressibleByLiteral

리터럴은 코드에 쓰인 값의 타입대로 그 타입의 인스턴스를 생성할 수 있도록 하는 표현이다. ExpressibleByLiteral 종류의 프로토콜은 말 그대로, 코드에 쓰이는 그대로 자신의 타입으로 인스턴스를 초기화하고 생성할 수 있는 타입의 프로토콜을 뜻한다.

프로토콜 이름 설명
ExpressibleByArrayLiteral 배열 리터럴을 통해 초기화할수 있는 타입
ExpressibleByBooleanLiteral 불리언 리터럴을 통해 초기화할 수 있는 타입
ExpressibleByDictionaryLiteral 딕셔너리 리터럴을 통해 초기화할 수 있는 타입
ExpressibleByFloatLiteral 부동소수 리터럴을 통해 초기화할 수 있는 타입
ExpressibleByIntegerLiteral 정수 리터럴을 통해 초기화할 수 있는 타입
ExpressibleByNilLietral nil을 통해 초기화할 수 있는 타입
ExpressibleByStringLiteral 문자열 리터럴을 통해 초기화할 수 있는 타입
ExpressibleByUnicodeScalarLiteral 유니코드 스칼라 값을 갖는 하나의 문자를 갖는 문자열 리터럴을 통해 초기화할 수 있는 타입

스위프트의 주요 함수