프로토콜 자체에서는 로직을 추가할 수 없으므로 익스텐션 확장을 이용해 메소드 추가함
프로토콜
이름관련 프로토콜
protocol Naming { var lastname: String { get set } var firstname: String { get set } func getName() -> String }
익스텐션
익스텐션 확장으로 메소드 추가
extension Naming { func getFullName() -> String { return self.lastname + " " + self.firstname } }
스트럭트
Naming 프로토콜을 임플레먼트하는 스트럭트
struct Friend : Naming { var lastname: String var firstname: String func getName() -> String { return self.lastname } }
결과
let myFriend = Friend(lastname: "정", firstname: "만쥬") myFriend.getName() // 정
Friend 스트럭트에는 없지만 프로토콜 확장을 통해 메소드가 추가됨
myFriend.getFullName() // 정 만쥬
반응형