HIT해
[Swift 기초문법 - 49] 프로토콜 조건 적용 본문
728x90
프로토콜을 적용하는데 특정 class에만 적용을 하고싶다면
extension 프로토콜명 where Self : 클래스명 {}
으로 구현할 수 있다!
프로토콜 조건부 적용 예시
import Foundation
protocol Naming{
var name : String {get set}
}
class Cat : Naming {
var name: String
init(name: String) {
self.name = name
}
}
class Dog : Naming{
var name: String
init(name: String) {
self.name = name
}
}
// 자기 자신이 만약 고양이다
extension Naming where Self : Cat {
func sayName(){
print("\(self.name) 야옹")
}
}
let myCat = Cat(name: "도라에몽")
myCat.sayName()
let myDog = Dog(name: "흰둥이")
myDog.
myCat 인스턴스 sayName 함수가 구현되어있지만 myDog에는 구현이 되지 않는다!
추가로 extension 자체에 Self 키워드를 사용해서 적용하지 않고 extension안에 정의되어있는 함수별로 조건을 걸 수도 있다!
extension func 조건부 정의
extension Naming {
func sayName() where Self : Dog {
print("멍멍")
}
func sayName() where Self : Cat {
print("야옹)
}
}
이렇게 정의를 하면 하나의 extension 만으로 여러 조건을 설정 할 수 있다
'Swift > Swift 기초문법' 카테고리의 다른 글
[Swift 기초문법 - 51] 중첩 타입 Nested Type (0) | 2024.08.19 |
---|---|
[Swift 기초문법 - 50] 자료형 체크 (0) | 2024.08.19 |
[Swift 기초문법 - 48] Toggle (0) | 2024.08.19 |
[Swift 기초문법 - 47] Singleton 패턴 (0) | 2024.08.19 |
[Swift 기초문법 - 46] Open (0) | 2024.08.18 |