1.枚举的基本定义
- 最常见的定义方式
enum Direction {
case north
case south
case east
case west
}
- 上面的简写的方式
enum Direction1 {
case north,south,east,west
}
3.枚举的正常使用
var dir = Direction.west
dir = Direction.east
dir = .north
print(dir)
switch dir {
case .north:
print("north")
case .south:
print("south")
case .east:
print("east")
case .west:
print("west")
}
2.关联值
可以想象一个场景,如果我想定义一个学生的成绩,但是学生的成绩有可能是打的A,B,C这种,也有可能是打具体的分数,我现在想定义一个枚举值,来表示这个情况。 首先从大类来分应该分为
enum Score {
case point
case grade
}
但是上面的问题接着有另外一个问题就是,我想表示一个具体的分数,比方说90分,我想表示一个具体的grade,比方说A,我该怎么操作呢? 那我可能又需要另外的声明变量了。 所以这里就有了一个设计,在枚举值的情况下再绑定一个值,那么就可以达到目的了。 所以就有了关联值这个东西。
enum Score {
case point(Int)
case grade(Character)
}
var score = Score.point(96)
score = .grade("A")
switch score {
case let .point(i):
print(i,"points")
case let .grade(i):
print("grade",i)
}
enum Date {
case digit(year: Int,month:Int,day:Int)
case string(String)
}
var date = Date.digit(year: 2011, month: 9, day: 10)
// 必要时let也可以改成var
switch date {
case .digit(let year, let month, let day):
print(year,month,day)
case let .string(value):
print(value)
}