본문 바로가기
Swift/기본

익스텐션

by 밤새는탐험가 2024. 4. 12.

구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능이다. 

 

타입만 알고 있다면, 그 타입의 소스 코드를 모르더라도 기능을 확장할 수 있다. 

 

⭐️ 익스텐션은 타입에 새로운 기능은 추가할 수 있지만, 기존에 존재하는 기능을 재정의할 수 없다.

 

익스텐션을 사용하는 대신에 원래 타입을 정의한 곳에서 추가하는 방법도 있지만, 

외부 라이브러리나 프레임워크를 가져다 쓴다면 수정하지 못한다. 

 

외부에서 가져온 타입에 내가 원하는 기능을 추가하고자 할 때 익스텐션을 사용한다. 

 

 

익스텐션 구현

연산 프로퍼티 추가

extension Int {
    var isEven: Bool {
        return self % 2 == 0
    }
    var isOdd: Bool {
        return self % 2 == 1
    }
}

print(1.isEven)    // false

var number: Int = 3
print(number.isEven)   // false

 

위의 익스텐션은 Int 타입에 두 개의 연산 프로퍼티를 추가했다.

 

 

메서드 추가

extension Int {
    func multiply(by n: Int) -> Int {
        return self * n
    }
}
print(3.multiply(by: 2))  // 6
print(4.multiply(by: 5))  // 20

 

위 코드의 익스텐션을 통해 Int 타입에 인스턴스 메서드인 multiply 메서드를 구현했다. 

여러 기능을 여러 익스텐션 블록으로 나눠서 구현하되 

관련된 기능별로 하나의 익스텐션 블록으로 묶어주는 것도 좋다. 

 

 

 

 

 

'Swift > 기본' 카테고리의 다른 글

고차함수  (0) 2024.04.15
오류처리  (0) 2024.04.13
프로토콜  (0) 2024.04.11
assert와 guard  (0) 2024.04.09
옵셔널 체이닝  (0) 2024.04.06