[Swift] 익스텐션

선주·2022년 4월 11일
0

Swift

목록 보기
13/20

📌 익스텐션

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

기능을 추가하려는 타입의 구현된 소스 코드를 알지 못하거나 볼 수 없다 해도, 타입만 알고 있다면 그 타입의 기능을 확장할 수도 있다.

익스텐션이 타입에 추가할 수 있는 기능

  • 연산 타입 프로퍼티 / 연산 인스턴스 프로퍼티
  • 타입 메서드 / 인스턴스 메서드
  • 이니셜라이저
  • 서브스크립트
  • 중첩 타입
  • 특정 프로토콜을 준수할 수 있도록 기능 추가

기능 추가

아래 익스텐션은 Int 타입에 두 개의 연산 프로퍼티와 메소드 하나를 추가한 것이다.

extension Int {
    var isEven: Bool { // 연산 프로퍼티 추가
        return self % 2 == 0
    }
    var isOdd: Bool { // 연산 프로퍼티 추가
        return self % 2 == 1
    }
    func multiply(by n: Int) -> Int { // 메소드 추가
        return self * n
    }
}

// 연산 프로퍼티 사용
print(1.isEven) // false
print(2.isEven) // true
print(1.isOdd)  // true
print(2.isOdd)  // false

var number: Int = 2
print(number.isEven) // true
print(number.isOdd) // false

// 메소드 사용
print(3.multiply(by: 2))  // 6
print(4.multiply(by: 5))  // 20

number = 3
print(number.multiply(by: 2))   // 6
print(number.multiply(by: 3))   // 9

아래 익스텐션은 String 타입에 이니셜라이저를 추가한 것이다.

extension String {
    init(int: Int) {
        self = "\(int)"
    }
    
    init(double: Double) {
        self = "\(double)"
    }
}

let stringFromInt: String = String(int: 100) 
// "100"

let stringFromDouble: String = String(double: 100.0)    
// "100.0"


야곰의 스위프트 기본 문법 강좌를 수강하며 작성한 내용입니다.

profile
기록하는 개발자 👀

0개의 댓글

Powered by GraphCDN, the GraphQL CDN