Swift: Extension / 확장

Wooyo·2023년 10월 24일
0
post-thumbnail

1. Extension

  • 구조체 / 클래스 / 열거형 / 타입 / 프로토콜에 새로운 기능을 추가할 수 있는 기능
  • 기존에 존재하는 기능을 재정의할 수는 없음
extension ExtensionName {
	// code
}
  • 추가적으로 다른 프로토콜 채책 가능
extension ExtensionName: Pro1, Pro2 {
	// code
}

2. Extension 구현

extension Int {
    var isEven: Bool {
        return self % 2 == 0
    }
    var isOdd: Bool {
        return self % 2 == 1
    }
}
print(1.isEven) // false
print(2.isEven) // true
print(1.isOdd)  // true
print(2.isOdd)  // false
var number: Int = 3
print(number.isEven) // false
print(number.isOdd) // true
number = 2
print(number.isEven) // true
print(number.isOdd) // false
  • 메서드 추가하기
extension Int {
    func multiply(by n: Int) -> Int {
        return self * n
    }
}
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
  • 이니셜라이져 추가하기
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
Wooyo의 개발 블로그

0개의 댓글