Swift开篇006->枚举

Swift开篇006->枚举,第1张

概述PART_A 枚举简介 定义:一组相关的值定义了一个共同的枚举类型 语法格式 enum Direction { case East case South case West case North case NorthWest, EastSouth // 多个成员值在一行时,可用逗号分开} 类型推断 var currentDirection = Dire

PART_A 枚举简介

定义:一组相关的值定义了一个共同的枚举类型

语法格式

enum Direction {    case East    case South    case West    case north    case northWest,EastSouth // 多个成员值在一行时,可用逗号分开}

类型推断

var currentDirection = Direction.East // 当类型已被推断出,可用简短语句(省略枚举类型名)来设置值:._currentDirection =.south

使用Switch匹配枚举值

switch需要穷举枚举成员,可以使用default分支来涵盖所有未明确处理的枚举成员

var currentDirection = Direction.East               switch currentDirection {    case .East:        print("East")    case .south:        print("South")    case .West:        print("West")    case .north:        print("north")    case .northWest,.EastSouth:        print("Other")    default:        print("Default")    }

PART_B 关联值

定义:将枚举成员使用元组组合成关联值

注意:同一变量可被分配成不同类型的关联值,但同一时刻仅能存储为一种类型

语法格式

enum Person {    case Male(@H_502_132@String,Int)    case Female(@H_502_132@String,@H_502_132@String)}func test() {    var p1 = Person.Male("zhangsan",28)    switch p1 {    case .Male(let name,let age):        print("\(name),\(age)")    // 元组成员类型相同时,可提出类型至case后面    case let .Female(name,desc):         print("\(name),\(desc)")    }}

PART_C1 原始值:原始值的类型必须相同

定义:即默认值. 对于一个特定的枚举成员,其原始值始终不变

说明

原始值类型可为字符、字符串、任意整型值、任意浮点型值

每个原始值在枚举声明中必须是唯一的

系统提供方法获取原始值:rawValue

语法格式

enum OriginStr: String {    case str1 = "hi"    case str2 = "how are you"}

PART_C2 原始值的隐式赋值

当使用整数作为原始值,隐式赋值依次递增1. 若第一个枚举成员未设置原始值,默认为0

当使用字符串作为原始值,每个枚举成员的隐式原始值为该枚举成员的名称

// 枚举类型一、星球(整型)enum Planet: Int {    case Mercury = 1,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune}// 枚举类型二、方位(字符串)enum Compasspoint: String {    case north,South,East,West}// 使用 rawValue 取默认原始值let earthsOrder = Planet.Earth.rawValue // earthOrder 值为 3

使用原始值初始化枚举实例

let possiblePlanet = Planet(rawValue: 7)// possiblePlanet类型为可选值:Planet?// 越界将返回 nil,否则将对应星球赋值给 possiblePlanet

PART_D 递归枚举(indirect):情况可被穷举时,适合数据建模

以下为解决案例:(3 + 4) * 5

定义

方式一

enum ArithmeticExpression {    case Num(Int)    indirect case Add(ArithmeticExpression,ArithmeticExpression)    indirect case Multiple(ArithmeticExpression,ArithmeticExpression)}

方式二:所有成员可递归时,将 indirect 放在 enum 声明前

indirect enum ArithmeticExpression2 {    case Num(Int)    case Add(ArithmeticExpression,ArithmeticExpression)    case Multiple(ArithmeticExpression,ArithmeticExpression)}
// 定义运算方法func test(Expression: ArithmeticExpression) -> Int {    switch Expression {    case let .Num(value):        return value    case let .Add(a,b):        return test11(a) + test11(b)    case let .Multiple(a,b):        return test11(a) * test11(b)    }}
// 调用运算方法、递归枚举进行运算let three = ArithmeticExpression.Num(3)let four = ArithmeticExpression.Num(4)let @H_502_132@sum = ArithmeticExpression.Add(three,four)let @H_502_132@result = ArithmeticExpression.Multiple(@H_502_132@sum,ArithmeticExpression.Num(5)) // result 值为 35

以上。如有错误和疑问,欢迎指正提出。 [email protected]

总结

以上是内存溢出为你收集整理的Swift开篇006->枚举全部内容,希望文章能够帮你解决Swift开篇006->枚举所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1075494.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存