Swift3(스위프트3)

swift3 스위프트3 익스텐션(extension)

알통몬_ 2017. 7. 12. 15:31
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


이번 포스팅에서는 익스텐션에 대해 공부합니다.


익스텐션이란 :

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

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

 타입만 알고 있다면 그 타입의 기능을 확장할 수도 있음.


익스텐션으로 추가할 수 있는 기능들

 - 연산 타입 / 연산 인스턴스 프로퍼티

 - 타입 / 인스턴스 메소드

 - 이니셜라이저 ( 생성자 in JAVA )

 - 서브스크립트 

 - 중첩 타입

 - 특정 프로토콜을 준수할 수 있도록 기능 추가

* 이미 존재하는 기능을 재정의 할 수는 없습니다.


사용 방법 :

extension 확장하고자 하는 타입의 이름 {

   // 기능 구현

}


* 익스텐션은 기존에 존재하는 타입이 추가적으로 다른 프로토콜을 채택할 수 있도록 확장 가능합니다.

extension 확장하고자 하는 타입의 이름 : 프로토콜이름1, ... {

   // 프로토콜의 요구 사항 구현

}


- extension 의 구현 예제들

1. 연산 프로퍼티 추가

extension Int {

   var checkEven : Bool {

      return self % 2 == 0

   }

   var checkOdd : Bool {

      return self % 2 == 1

   }

}

print(3.checkEven) // false

var number : Int = 4

print(number.checkOdd)// false


2.  메소드 추가

extension Int {

   func square( by num : Int ) -> Int {

      self = num

      return self * self

   }

}

print(square( by : 3)) // 9

var number : Int = 4

print(square( by : number )) // 16


3. 이니셜라이저(생성자) 추가

extension String {

   init( inputIntValue : Int ) {

      self = "\(inputIntValue)"

   }

}

var intToString : String = String(26)

print(intToString) // "26"


이상입니다.


다음 포스팅에서는 오류 처리에 대해 공부합니다.

반응형