본문 바로가기
프로그래밍/iOS-Swift

[SWIFT] EXTENSION

by 채연2 2021. 4. 5.

EXTENSION

- 존재하는 클래스, 구조체, 열거형, 프로토콜 타입에 새롭게 기능적인 부분 추가할 수 있는 문법

- 이전의 내부 소스를 접근할 수 없는 원본 타입들에 대해 새로운 기능 부여 가능

 

 

 

EXTENSION 기능

- 계산 property, 계산 타입 property 추가 기능

- instance method, type method 정의

- 새로운 initializer 제공

- subscripts(첨자) 접근방식 정의

- nested type(중첩 타입) 정의 및 사용

- 특정 프로토콜을 준수하는 현존 타입 정의

- 전역 함수가 아닌 프로토콜 자체에서 동작 정의 가능

 

 

 

EXTENSION 예

extension RandomNumberGenerator {
    func randomBool() -> Bool {
        return random() > 0.5
    }
}
let generator = LinearCongruentialGenerator()
print("Here's a random number: \(generator.random())")
// Prints "Here's a random number: 0.3746499199817101"
print("And here's a random Boolean: \(generator.randomBool())")
// Prints "And here's a random Boolean: true"

- 프로토콜에 대한 확장 생성함으로써 추가 수정없이 메소드 구현 자동적으로 얻음

 

 

 

마무리

- extension 기능은 위와 같이 구조체, 클래스, 열거형, 프로토콜의 추가 구현부, 제약사항, 기능 등을 정의할 수 있는 유용한 기능

- 특정 타입의 기능 및 준수하는 프로토콜 별 구현부를 분리해서 보다 코드를 보기 쉽게 정리 가능

320x100

댓글