大佬教程收集整理的这篇文章主要介绍了Swift开篇006->枚举,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
PART_A 枚举简介
定义:一组相关的值定义了一个共同的枚举类型
语法格式
enum Direction {
case East
case South
case West
case North
case NorthWest,EastSouth @H_450_46@// 多个成员值在一行时,可用逗号分开
}
类型推断
var currentDirection = Direction.East
@H_450_46@// 当类型已被推断出,可用简短语句(省略枚举类型名)来设置值:._
currentDirection =.south
使用Switch匹配枚举值
PART_B 关联值
定义:将枚举成员使用元组组合成关联值
注意:同一变量可被分配成不同类型的关联值,但同一时刻仅能存储为一种类型
语法格式
enum Person {
case Male(String,int)
case Female(String,String)
}
func test() {
var p1 = Person.Male("zhangsan",28)
switch p1 {
case .Male(let name,let agE):
print("\(Name),\(agE)")
@H_450_46@// 元组成员类型相同时,可提出类型至case后面
case let .Female(name,desc):
print("\(Name),\(desc)")
}
}
PART_C1 原始值:原始值的类型必须相同
PART_C2 原始值的隐式赋值
当使用字符串作为原始值,每个枚举成员的隐式原始值为该枚举成员的名称
@H_450_46@// 枚举类型一、星球(整型)
enum Planet: Int {
case Mercury = 1,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune
}
@H_450_46@// 枚举类型二、方位(字符串)
enum CompassPoint: String {
case North,South,East,West
}
@H_450_46@// 使用 rawValue 取默认原始值
let earthsOrder = Planet.Earth.rawValue @H_450_46@// earthOrder 值为 3
使用原始值初始化枚举实例
let possiblePlanet = Planet(rawValue: 7)
@H_450_46@// possiblePlanet类型为可选值:Planet?
@H_450_46@// 越界将返回 nil,否则将对应星球赋值给 possiblePlanet
PART_D 递归枚举(indirect
):情况可被穷举时,适合数据建模
定义
方式一
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)
}
@H_450_46@// 定义运算方法
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 sum = ArithmeticExpression.Add(three,four)
let result = ArithmeticExpression.Multiple(sum,ArithmeticExpression.Num(5))@H_450_46@ // result 值为 35
以上是大佬教程为你收集整理的Swift开篇006->枚举全部内容,希望文章能够帮你解决Swift开篇006->枚举所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。