Protocol Composition Type

protocol composition type은 명확히 기술된 프로토콜의 목록 에서 각 프로토콜을 채택한 타입으로 정의합니다. 또는 지정된 클래스의 서브클래스이고 지정된 프로토콜 목록의 각 프로토콜을 준수하는 타입을 정의합니다. protocol composition typestype annotations 에서 일반 매개 변수절 및 제네릭 where절 에서 타입을 지정할 때만 사용할 수 있습니다.

프로토콜 구성 유형의 형식은 다음과 같습니다.

Protocol 1 & Protocol 2 

예를들어 ProtocolA, ProtocolB 및 ProtocolC를 상속하는 새 프로토콜을 선언하는 대신 프로토콜 구성 유형인 ProtocolA & ProtocolB & ProtocolC를 사용할수 있습니다. 마찬가지로 SuperClass의 하위 클래스이며 ProtocolA를 준수하는 새 프로토콜을 선언하는 대신 SuperClass & ProtocolA를 사용할 수 있습니다.

프로토콜의 구성목록의 각 항목은 다음 중 하나입니다. 목록에는 많아야 하나의 클래스만 포함될수 있습니다.

  • The name of a class
  • The name of a protocol

어떤 타입의 기초된 타입의 별칭은 protocol composition type, 프로토콜 또는 클래스 입니다.

protocol composition type에 타입 별칭(type aliases)가 포함되어 있으면 동일한 프로토콜이 정의에 두번 이상 나타날수 있습니다. 복제본은 무시됩니다. 예를들어 아래 코드에서 PQR의 정의는 P & Q & R과 같습니다.

typealias PQ = P & Q
typealias PQR = PQ & Q & R

Refernece

protocol-composition-type
type annotations