| 프로토콜 이름 | 설명 |
|---|---|
| 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 종류의 프로토콜은 말 그대로, 코드에 쓰이는 그대로 자신의 타입으로 인스턴스를 초기화하고 생성할 수 있는 타입의 프로토콜을 뜻한다.
| 프로토콜 이름 | 설명 |
|---|---|
| ExpressibleByArrayLiteral | 배열 리터럴을 통해 초기화할수 있는 타입 |
| ExpressibleByBooleanLiteral | 불리언 리터럴을 통해 초기화할 수 있는 타입 |
| ExpressibleByDictionaryLiteral | 딕셔너리 리터럴을 통해 초기화할 수 있는 타입 |
| ExpressibleByFloatLiteral | 부동소수 리터럴을 통해 초기화할 수 있는 타입 |
| ExpressibleByIntegerLiteral | 정수 리터럴을 통해 초기화할 수 있는 타입 |
| ExpressibleByNilLietral | nil을 통해 초기화할 수 있는 타입 |
| ExpressibleByStringLiteral | 문자열 리터럴을 통해 초기화할 수 있는 타입 |
| ExpressibleByUnicodeScalarLiteral | 유니코드 스칼라 값을 갖는 하나의 문자를 갖는 문자열 리터럴을 통해 초기화할 수 있는 타입 |
abs: 전달인자로 받은 값의 절댓값을 반환하는 함수
@inlinable public func abs<T>(_ x: T) -> T where T : Comparable, T : SignedNumeric
assert: 전통적인 C 스타일의 Assert를 위해 제공하는 함수로 실제 배포하는 빌드에서는 영향을 미치지 않으므로 실제 배포하는 코드에는 precondition 함수를 사용한다.
public func assert(_ condition: @autoclosure () -> Bool, _ message: @autoclosure () -> String = String(), file: StaticString = #file, line: UInt = #line)
assertionFailure: 디버그용 빌드에서 프로그램을 중단하고 디버그 가능한 상태로 전환하고 싶을 때 사용한다.
@inlinable public func assertionFailure(_ message: @autoclosure () -> String = String(), file: StaticString = #file, line: UInt = #line)
debugPrint: items을 텍스트 표현으로 표준 출력하거나 output에 작성해 디버깅에 적합하도록 만든다.
public func debugPrint(_ items: Any..., separator: String = " ", terminator: String = "\\n")
public func print<Target>(_ items: Any..., separator: String = " ", terminator: String = "\\n", to output: inout Target) where Target : TextOutputStream
dump: 표준 출력 또는 지정된 출력 스트림을 통해 객체 내용의 덤프를 생성한다.
public func dump<T>(_ value: T, name: String? = nil, indent: Int = 0, maxDepth: Int = .max, maxItems: Int = .max) -> T
public func dump<T, TargetStream>(_ value: T, to target: inout TargetStream, name: String? = nil, indent: Int = 0,
maxDepth: Int = .max, maxItems: Int = .max) -> T where TargetStream : TextOutputStream
fatalError: message의 내용을 출력하고 무조건 프로그램 실행을 중단시킨다.
public func fatalError(_ message: @autoclosure () -> String = String(), file: StaticString = #file, line: UInt = #line) -> Never
getVaList: 매개변수를 이용해 전달받은 [CVarArg] 타입을 C 언어의 매개변수 리스트 포인터 타입인 CVaListPointer로 반환한다. CVaListPointer 타입은 C 언어의 va_list 전달인자로 사용할 수 있다. C 언어 함수를 스위프트 함수로 매핑하는 데 사용하기 좋지만 withVaList(::) 함수를 사용할 것을 더 권장한다.
@inlinable public func getVaList(_ args: [CVarArg]) -> CVaListPointer
max: 전달인자 중에 가장 큰 값을 반환한다. 동일한 값이 있다면 제일 마지막의 값을 반환한다.
@inlinable public func max<T>(_ x: T, _ y: T) -> T where T : Comparable
@inlinable public func max<T>(_ x: T, _ y: T, _ z: T, _ rest: T...) -> T where T : Comparable
min: 전달인자 중에 가장 작은 값을 반환한다. 만약 동일한 값이 있다면 제일 처음 값을 반환한다.
@inlinable public func min<T>(_ x: T, _ y: T) -> T where T : Comparable
numericCast: 정수 타입의 값을 다른 크기의 정수 타입으로 변환한다. 오버플로가 발생할 경우 런타임 오류가 발생한다.
@inlinable public func numericCast<T, U>(_ x: T) -> U where T : BinaryIntegar, U : BinaryIntegar
precondition
public func precondition(_ condition: @autoclosure () -> Bool, _ message: @autoclosure () -> String = String(), file: StaticString = #file, line: UInt = #line)
preconditionFailure
public func preconditionFailure(_ message: @autoclosure () -> String = String(), file: StaticString = #file, line: UInt = #line) -> Never
print: items의 텍스트 표현을 표준 출력 또는 output에 작성한다.
public func print(_ items: Any..., separator: String = " ", terminator: String = "\\n")
public func print<Target>(_ items: Any..., separator: String = " ", terminator: String = "\\n", to output: inout Target) where Target : TextOutputStream