공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 익스텐션에 대해 공부합니다.
익스텐션이란 :
클래스, 구조체, 열거형, 프로토콜 타입에 새로운 기능을 추가할 수 있는 기능
기능을 추가하려는 타입의 구현된 소스코드를 알지 못하거나, 볼 수 없다고 해도
타입만 알고 있다면 그 타입의 기능을 확장할 수도 있음.
익스텐션으로 추가할 수 있는 기능들
- 연산 타입 / 연산 인스턴스 프로퍼티
- 타입 / 인스턴스 메소드
- 이니셜라이저 ( 생성자 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"
이상입니다.
다음 포스팅에서는 오류 처리에 대해 공부합니다.
'Swift3(스위프트3)' 카테고리의 다른 글
swift3 스위프트3 고차함수 (0) | 2017.07.17 |
---|---|
swift3 스위프트3 오류처리 throws (0) | 2017.07.14 |
swift3 스위프트3 protocol 프로토콜, 프로토콜 상속에 대해 (0) | 2017.07.12 |
swift3 스위프트3 assert, guard (0) | 2017.07.11 |
swift3 스위프트3 타입 캐스팅 : 업 캐스팅과 다운 캐스팅 (0) | 2017.07.10 |