오늘은 구조체의 확장형, 다른말로 상속에 대해서 배웠다.
struct Math {
static func abs(value: Int) -> Int {
if value > 0 {
return value
} else {
return -value
}
}
}
Math.abs(value: -20)
// 제곱, 반값
extension Math {
static func sqaure(value: Int) -> Int {
return value * value
}
static func half(value: Int) -> Int {
return value/2
}
}
Math.sqaure(value: 5)
Math.half(value: 20)
extension이라는 키워드를 func 대신 붙여서 사용할 수 있다.
그런데 처음부터 Math 구조체 안에 넣었으면 됐을텐데 왜 분리해야하는 것일까?
다음 코드를 보도록하자
var value: Int = 10
// 제곱, 반값
extension Int {
func square() -> Int {
return self * self
}
func half() -> Int {
return self/2
}
}
value.square()
value.half()
정수 타입인 Int를 보자.
Int에 메소드를 추가하고 싶을 때 다음과 같이 확장할 수 있다.
이미 Int는 스위프트의 기본 개발 언어이고 함부로 수정할 수 없다.
남이 짜놓은 코드에 어떤 기능을 확장하고 싶을 때 사용할 수 있을 것이다.
그 다음에 배운 것은 구조체와 유사한 형태의 클래스
구조체와의 가장 큰 차이라고 한다면 구조체는 value를 할당해주고 클래스는 reference를 할당해준다는 것.
reference를 할당한다는 것은 C언의 포인터와 동일한 개념이다.
구조체는 틀만 내어줄 뿐이고, 클래스는 자신에게 직접 접근할 권한을 준다.
올인원 패키지 : iOS 앱 개발👉https://bit.ly/2FjWizq
'패스트캠퍼스) ios 개발 챌린지' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 26회차 미션 (0) | 2020.11.27 |
---|---|
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 25회차 미션 (0) | 2020.11.26 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 23회차 미션 (0) | 2020.11.24 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 22회차 미션 (0) | 2020.11.23 |
[패스트캠퍼스 수강 후기] IOS개발강의 100% 환급 챌린지 21회차 미션 (0) | 2020.11.22 |