하루에 0.01%라도 성장하자

Develop/iOS

Swift 익스텐션

뚠님 2019. 5. 13. 14:52
반응형

Swift

 

익스텐션(Extension)

 

  • 구조체, 클래스, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능
  • 타입만 알고 있다면 그 타입의 기능을 확장할 수 있다.

 

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

 

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

 

상속과 익스텐션의 차이

 

분류 상속 익스텐션
확장 수직 확장 수평 확장
사용 클래스 타입 클래스, 구조체, 프로토콜, 제네릭 등 모든 타임
재정의 가능 불가능

 

 

사용법

 

extension 확장할 타입 이름 {
    /* 기능 구현 */
}

 

[ 사용 예 ]

 

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;

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

print(number.multiply(n:3)); // 9

 

이런식으로 추가가 가능하다.

 


 

익스텐션은 정말 신세계다... 이런식으로 코딩이 가능하다면 충분히 강력한 코딩이 가능하다.

아직은 익숙하지 않지만 실제로 코딩을 하기 시작하면 엄청 사용할 것 같다.

반응형

'Develop > iOS' 카테고리의 다른 글

iOS 음악 재생 앱 만들기 Part#1 - 앱 개발  (0) 2019.05.14
Swift 오류 처리 ( Error )  (0) 2019.05.13
Swift 프로토콜 (Protocol)  (0) 2019.05.10
Swift assert 와 guard  (0) 2019.05.10
Swift nil병합 연산자  (0) 2019.05.10