Language/Swift-Basic

Swift - 프로토콜 확장

Jessi :D 2022. 3. 2. 07:19

프로토콜 자체에서는 로직을 추가할 수 없으므로 익스텐션 확장을 이용해 메소드 추가함

 

프로토콜

이름관련 프로토콜

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()
// 정 만쥬

 

반응형