20-4. 프로토콜의 확장(protocol extension)

🌈 devleeky16498·2022년 4월 21일
0

프로토콜의 확장

  1. 프로토콜은 스스로를 준수하는 타입에 제공하기 위한 메서드, 초기화 구문, 서브스크립트 및 계산된 프로퍼티 구현을 확장할 수 있다.
extension RandomNumberGenerator {
	func randomBool() -> Bool {
    	return random() > 0.5
    }
}
//다음과 같이 프로토콜을 확장함으로서 준수하는 모든 타입들은 추가수정없이 메서드 구현을 자동으로 얻게 된다.

확장간 기본 구현내용 제공

  1. 해당 프로토콜의 모든 메서드 또는 계산된 프로퍼티의 요구사항에 기본 구현을 제공하기 위해서, 프로토콜 확장을 사용할 수 있다. 다음 예시에서는 프로토콜 프로퍼티의 기본 구현을 미리 제공할 수 있다.
extension PrettyTextRepresentable {
	var prettyTextualDescription : String {
    	return textualDescription
    }
}

프로토콜 확장에 제약사항 추가

  1. 프로토콜의 확장을 정의하는 경우 where절을 통해서 제약사항 추가가 가능하다.
extension Collection where Element : Equatable {
	func allEqual() -> Bool {
    	for element in self {
        	if element != self.first {
            	return false
            }
        }
        return true
    }
}
//다음의 메서드는 콜렉션에 모든 요소가 같을때만 true를 반환하게 된다.

let equalNumbers = [100, 100, 100, 100]
let differentNumbers = [200, 100, 200, 100]

print(equalNumbers.allEqual())
//참을 출력한다.
print(differentNumbers.allEqual())
//거짓을 출력한다.
profile
Welcome to Growing iOS developer's Blog! Enjoy!🔥

0개의 댓글