확장(extension)

JG Ahn·2024년 11월 1일

swift 기초

목록 보기
20/23
post-thumbnail

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에서 연산 프로퍼티 구현
extension Person {
    var nameAge: String {
        return "\(firstName)(\(age)세)"
    }
}

// extension에서 메소드 구현
extension Person {
    func sayHello() {
        print("\(firstName)님 안녕하세요?")
    }
}

// extension에서 protocol 구체화
extension Person: FullyNamed {
    var fullName: String {
        return "\(lastName)\(firstName)"
    }
    
    func sayMyFullName() -> String {
        return "제 이름은 \(fullName)입니다."
    }
}


let person = Person(lastName: "kane", firstName: "harry", age: 31)

// extension에서 구현한 연산프로퍼티 사용
print(person.nameAge) //결과 : harry(31세)

// extension에서 구현한 메소드 호출
person.sayHello() //결과 : harry님 안녕하세요?

// extension에서 구현한 프로토콜 사용
print(person.fullName) //결과 : kaneharry

// extension에서 구현한 프로토콜 사용
print(person.sayMyFullName()) // 제 이름은 kaneharry입니다.

0개의 댓글