1. 확장
- 기존
struct, class, enum, protocol 타입의 원본 코드를 수정하지 않고 새로운 기능을 추가할 수 있는 키워드. 코드의 유지보수와 가독성을 향상시킴
extension 키워드 사용
- 하나의 타입에 여러번의
extension 가능
- 확장 가능한 것
- 연산 프로퍼티 (저장프로퍼티는 사용 불가)
- 메소드
- 새로운 초기화
init
- 중첩된 타입
2. 사용 방법
struct Person {
let lastName: String
let firstName: String
let age: Int
}
protocol FullyNamed {
var fullName: String { get }
func sayMyFullName() -> String
}
extension Person {
var nameAge: String {
return "\(firstName)(\(age)세)"
}
}
extension Person {
func sayHello() {
print("\(firstName)님 안녕하세요?")
}
}
extension Person: FullyNamed {
var fullName: String {
return "\(lastName)\(firstName)"
}
func sayMyFullName() -> String {
return "제 이름은 \(fullName)입니다."
}
}
let person = Person(lastName: "kane", firstName: "harry", age: 31)
print(person.nameAge)
person.sayHello()
print(person.fullName)
print(person.sayMyFullName())