4.枚举

53 阅读1分钟

1.枚举的基本定义

  1. 最常见的定义方式
enum Direction {
    case north
    case south
    case east
    case west
}
  1. 上面的简写的方式
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)
}