티스토리 뷰

TIL

07월 25일: 프트로콜과 enum의 기본값 설정

알롱도담쓰 2023. 7. 25. 14:58

프로토콜에는 기본값을 설정해줄 수 없지만, 확장을 쓰면 기본값을 설정해줄 수가 있다!

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."
        }
    }
}
최근에 올라온 글