티스토리 뷰
프로토콜에는 기본값을 설정해줄 수 없지만, 확장을 쓰면 기본값을 설정해줄 수가 있다!
protocol Drawable {
func draw()
}
extension Drawable {
func draw() {
print("Drawing...")
}
}
// Drawable 프로토콜을 채택한 타입들이 draw() 메서드를 구현하지 않더라도
// 기본적으로 "Drawing..."을 출력하는 draw() 메서드를 자동으로 사용할 수 있음
struct Circle: Drawable {
}
let circle = Circle()
circle.draw() // 출력: "Drawing..."
// 물론 오버라이딩을 해도 된다
struct Rectangle: Drawable {
func draw() {
print("Drawing a rectangle.")
}
}
let rectangle = Rectangle()
rectangle.draw() // 출력: "Drawing a rectangle."
장점
- 코드 재사용성
- 기본 동작 제공
마찬가지로 이넘에서도 기본값을 확장으로 줄 수도 있다는 것을 깨달았다!
enum Shape {
case circle
case rectangle
case triangle
}
extension Shape {
func description() -> String {
switch self {
case .circle:
return "This is a circle."
case .rectangle:
return "This is a rectangle."
case .triangle:
return "This is a triangle."
}
}
}
'TIL' 카테고리의 다른 글
07월 27일: Data와 Date는 헷갈리지 말 것 (0) | 2023.07.27 |
---|---|
07월 26일: Errors thrown from here are not handled because the enclosing catch is not exhaustive (0) | 2023.07.26 |
07월 24일: 엑스코드 단축키 (0) | 2023.07.24 |
7월 21일: swift) 천 단위마다 콤마 찍기 (0) | 2023.07.21 |
7월 20일: 객체지향 5원칙 (SOLID) (0) | 2023.07.20 |
최근에 올라온 글