美文网首页
Swift 枚举(下)

Swift 枚举(下)

作者: Fatm | 来源:发表于2021-05-20 15:02 被阅读0次

记录《objccn-advanced-swift》

在枚举和协议之间的相似

一个画图程序

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<Element> {
case end
indirect case node(Element, next: List<Element>) 
}

原始值

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<Wrapped> {
    case some(Wrapped)
    case none
}

相关文章

  • Swift-07:枚举enum

    这里先介绍一下swift枚举与oc枚举的区别 OC: 枚举只能为Int类型swift : 可以在枚举中定义方法 可...

  • Swift 基础笔记 - 枚举

    枚举 OC定义和使用枚举 Swift定义枚举类型 Swift判断枚举类型 枚举成员类型

  • Swift 枚举(下)

    记录《objccn-advanced-swift》 在枚举和协议之间的相似 一个画图程序 在枚举中可以轻松添加新的...

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • Swift - 枚举

    Swift - 枚举 枚举在C和Swift中有所不同, Swift中的枚举, 更加灵活, 更加强大 C 值类型: ...

  • Swift基础语法-枚举,枚举原始值,枚举相关值,switch提

    1. Swift枚举基本概念 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像...

  • Swift枚举高级用法(Enum)

    关于swift的枚举 一 swift对于枚举的扩展性(Enum) 枚举的继承(继承任何类和协议,目前除了swift...

  • swift3.0- 枚举

    Swift枚举 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • 枚举

    Swift枚举:Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样...

  • 谈谈Swift中的枚举内存布局

    谈谈Swift中的枚举内存布局谈谈Swift中的枚举内存布局

网友评论

      本文标题:Swift 枚举(下)

      本文链接:https://www.haomeiwen.com/subject/wpgvjltx.html