프로토콜 확장

작성일

프로토콜 확장

// 이름관련 프로토콜
protocol Naming {
  var lastname : String { get set }
  var firstname : String { get set }
  func getName() -> String
}
// 익스텐션확장을 통해 프로토콜에 메소드 추가
extension Naming {
  func getFullname() -> String {
    return self.lastname + self.fristname
  }
}

// Naming 프로토콜을 임플레먼트하는 스트럭트
struct Friend : Naming {
  var lastname : String
  var firstname : String
  func getName() -> String{
    return self.firstname
  }
}

let myFriend = Friend(lastname:"최", firstname:"재권")

let name = myFriend.getName()

print("네임: ", name)
// Friend 스트럭트에는 없지만 프로토콜 확장을 통해 메소드가 추가된 것을 확인할 수 있음
let fullname = myFriend.getFullname()
print("풀네임: \(fullname)")