Swift 열거(아래)

1376 단어
기록
매거와 프로토콜 사이의 유사성
그래픽 프로그램
enum Shape {
case line(from: Point, to: Point)
case rectangle(origin: Point, width: Double, height: Double) case circle(center: Point, radius: Double)
}

extension Shape {
func render(into context: CGContext) {
  switch self {
  case let .line(from, to): // ...
  case let .rectangle(origin, width,   height): // ...
  case let .circle(center, radius): // ...
} }
}
protocol Shape {
func render(into context: CGContext)
}

struct Rectangle: Shape { 
var origin: Point
var width: Double
var height: Double
func render(into context: CGContext) { /* ... */ } }

매거진에 새로운 렌더링 방법을 쉽게 추가할 수 있고, 프로토콜은 쉽게 새로운 모양을 추가할 수 있다
매거진을 사용하여 귀속 데이터 구조를 실현하다
///       。 
enum List {
case end
indirect case node(Element, next: List) 
}

원시값
enum HTTPStatus: Int { 
case ok = 200
case created = 201
// ...
case movedPermanently = 301 // ...
case notFound = 404
// ...
}

열거하다.
protocol CaseIterable {
associatedtype AllCases: Collection where AllCases.Element == Self
static var allCases: AllCases { get } 
}

고정 및 비고정 열거
@frozen enum Optional {
    case some(Wrapped)
    case none
}

좋은 웹페이지 즐겨찾기