^야곰님 강좌^
프로토콜 : 특정 기능 수행에 필수적인 요소를 정의한 *청사진(blueprint)
구조체, 클래스, 열거형은 프로토콜을 채택(Adopted)해서 프로토콜의 요구사항을 실제로 구현할 수 있다.
프로토콜을 만족시키는 타입을 프로토콜을 따른다(conform)고 말한다.
프로토콜에 필수 구현을 추가하거나 추가적인 기능을 더하기 위해 프로토콜을 확장(extend)하는 것이 가능하다.
문법
프로토콜의 정의는 클래스, 구조체, 열거형 등과 유사하다.
protocol SomeProtocol {
// protocol definition goes here
}
프로토콜을 따르는 타입을 정의하기 위해서는 타입 이름 뒤에 콜론을 붙이고 따를 프로토콜 이름을 적는다.
만약 따르는 프로토콜이 여러개라면 콤마로 구분한다.
struct SomeStructure: FirstProtocol, AnotherProtocol {
// structure definition goes here
}
클래스를 상속받을 경우 수퍼클래스를 프로토콜 앞에 적어준다.
class SomeClass: SomeSuperclass, FirstProtocol, AnotherProtocol {
// class definition goes here
}
mutating 키워드
mutating 키워드를 사용하면 인스턴스에서 변경가능하다는 것을 표시 할 수 있다.
mutating 키워드는 값타입 형에만 사용한다.
required 키워드
대부분의 프로토콜은 옵셔널 = 프로토콜에 정의된 모든 것들을 따르지 않아도 됨
하지만 required 키워드를 사용한 프로토콜 메서드는 무조건 따라야한다.
!만약 따르지 않는다면 동작하지 않음!
*청사진 : 어떠한 자세한 계획
댓글