https://developer.apple.com/design/human-interface-guidelines/
extension은 하위 클래스를 생성하거나 참조하지 않고 기존 클래스에 메서드, 생성자(initializer), 계산 프로퍼티 등의 기능을 추가하기 위하여 사용
클래스(구조체, 열거형, protocol)는 다음과 같은 형태로 확장(익스텐션)함
표준 자료형 Double 구조체에 두 배의 값을 반환하는 프로퍼티를 추가
extension Double {
var squared : Double { //기존 Double형 구조체에 계산 프로퍼티 추가
return self * self
}
}
let myValue: Double = 3.0
print(myValue.squared)
print(2.0.squared)
// 실행결과
9.0
4.0
표준 자료형 Double 구조체에 +1 값을 반환하는 프로퍼티를 추가
extension Double {
var squared :Double { //기존 Double형 구조체에 계산 프로퍼티 추가
return self + 1.0
}
}
let myValue:Double = 3.0
print(myValue.squared) //4.0
print(2.0.squared) //3.0
// 실행결과
4.0
3.0
protocol B {
func bb(x:Int) -> Int
}
class C{}
class A : C, B{ // 클래스 C로부터 상속을 받고 프로토콜 B를 채택함
func bb(x:Int) -> Int {
return x*2
}
}
let a : A = A()
print(a.bb(x:3)) // bb 호출함 (argument: 3)
// 실행결과
6
출처:iOS프로그래밍기초 (22-2학기)한성현교수님 강의 내용 변형 및 요약 9주차