Swift의 Extension에 대해 정리하고자 한다. 먼저, Apple의 공식 문서부터 보면...
Extension
은 말그대로 확장이라는 뜻을 가지고 있는데, Swift에서는 이미 존재하는 Class, Structure, enumeration, Protocol에서 새로운 Function을 정의하는 것이라고 생각하면 된다. 상속과 다르게 Extension은 기존의 function을 override하는 것이 아니고, 새롭게 추가하는 개념이다.
class Person {
var name: String
init(name: String) {
self.name = name
}
}
extension Person {
func sayHello() {
print("Hello, my name is \(name)!")
}
}
// Usage
let person = Person(name: "Mahi")
person.sayHello() // Output: "Hello, my name is Mahi!"
위의 예시처럼, Person이라는 Class에 extension을 사용하여, sayHello() Function이 추가되었다. 여기서 중요한 것은, 해당 프로젝트에서 Person의 모든 Instance는 sayHello()를 사용할 수 있다는 점이다.