프로토콜 자체에서는 로직을 추가할 수 없으므로 익스텐션 확장을 이용해 메소드 추가함
프로토콜
이름관련 프로토콜
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()
// 정 만쥬
반응형