메소드의 확장 Extension
기존 선언한 클래스나 구조체에 메소드를 더 추가하여 기능을 확장하고자 할 때가 있다.
이럴 때 클래스나 구조체를 선언한 파일 위치를 찾아 선언부에 메소드를 추가할 수 있다.
하지만 언제나 선언부에 메소드를 추가하는 것이 답이 아닐 수도 있다.
언제나 선언부에 메소드를 추가하게 되면, 다른 사람이 선언한 것도 겹쳐 충돌이 날 수도 있고, 매번 클래스나 구조체 선언부를 찾는 게 어려울 수도 있기 때문이다.
이럴 땐 extension을 활요하면 된다.
struct Math {
static func abs(value: Int) -> Int {
if value > 0 {
return value
} else {
return -value
}
}
}
Math.abs(value: -20)
// 제곱, 반값
extension Math {
static func square(value: Int) -> Int {
return value * value
}
static func half(value: Int) -> Int {
return value / 2
}
}
기존에 선언된 Math structure에 square, half라는 메소드를 추가하고 싶다면, extension 키워드를 Math {} 앞에 붙여 기존 선언부 외에 추가로 선언할 수 있다.
그리고 기존 Swift에서 제공하는 자료형이나 클래스에 내가 정의한 메소드를 추가하고 싶은 경우 extension을 이용할 수 있다.
extension Int {
func square() -> Int {
return self * self
}
func half() -> Int {
return self / 2
}
}
Swift에서 제공하는 Int 자료형에 제곱과 절반을 반환하는 함수 square(), half()를 extension을 이용하여 추가하였다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
'iOS > iOS 앱 개발 올인원 패키지 Online' 카테고리의 다른 글
[iOS] 패스트캠퍼스 챌린지 22일차 - Class.상속(1) (0) | 2021.09.27 |
---|---|
[iOS] 패스트캠퍼스 챌린지 21일차 - Class(1) (0) | 2021.09.26 |
[iOS] 패스트캠퍼스 챌린지 19일차 - Structure(4).Property vs. Method (0) | 2021.09.24 |
[iOS] 패스트캠퍼스 챌린지 18일차 - Structure(3) (0) | 2021.09.23 |
[iOS] 패스트캠퍼스 챌린지 17일차 - Structure(2).예제 (0) | 2021.09.22 |