나만의 공부 노트
프로토콜과 익스텐션에 관하여 본문
프로토콜은 타입이다! (인터페이스이기도 하지만 타입의 역할이 더 중요한 듯)
class, enum, struct에 사용 가능하고 extension으로 확장도 가능하다
프로토콜을 extension 시에 extension은 함수의 body를 구현해야한다 -> 모순이지 않는가? (인터페이스잖아!)
하지만 이렇게 하지 않으면 기존에 프로토콜을 쓰던 애들은 갑자기 생겨버린 함수에 다 깨져버리는걸 ㅜ
그렇기에 이번만큼은.. 프로토콜이 extension으로 구현한 함수의 body를 default로 받아들여준다
프로토콜은 {get}, {get set} 만 가능(저장 프로퍼티인지 계산 프로퍼티인지는 명시 안해도 됨)
익스텐션은 계산 프로퍼티만 가능 -> 저장 프로퍼티를 사용하면 init에서 문제가 발생할 수 있기에(위에 함수에서처럼 문제 나것제!)
mutating 키워드는 값 프로퍼티일 때 사용(struct, enum), 기본적으론 한번 구현된 값 프로퍼티는 내부 변수 값 변경 불가능
-> 따라서 mutating func 사용시 새로운 값 프로퍼티를 만들고 기존에 프로퍼티와 바꾸는 형식으로 구현되어 있음
'정리 X > Swift' 카테고리의 다른 글
열거형에 관하여 (0) | 2021.02.14 |
---|---|
변수의 키워드에 관하여 (0) | 2021.02.05 |
이니셜라이저의 키워드에 관하여 (0) | 2021.02.05 |
클로저(메모리)에 관하여 (0) | 2021.02.05 |
변수의 키워드(메모리)에 관하여 (0) | 2021.02.05 |