枚举enum和结构体与C中的类似,主要用于别名定义一些有限的类型和一些复杂的数据结构。但是在swift中的枚举呢除了具有基本的类型限制和别名使用外还可以进行继承,遵守协议。
结构体struct和后续的类相似,但是结构体是一个值拷贝的数据类型。
一:枚举
1:枚举的声明
声明一个枚举需要使用关键字enum;
enum Toward{
case Forward
case Back
case Left
case Right
}
case 关键字表示增加一个枚举定义值,当然,还可以把所有的枚举值写在一行当中。
enum Toward{
case Forward , Back , Left , Right
2:枚举值
枚举元素只有在指定了类型之后才可能有原始值,可以用 toRaw() 的方法获取枚举的原始值。
例如:
let goTo = Toward.Left //获取枚举中的某个定义的值
print(goTo.toRaw()) //错误的。因为枚举中并没有对每个元素赋相应的值。
在以上的定义中,四个枚举值并没有被赋具体的值(这与C语言中不同的地方)
如果要给枚举中定义的所有的枚举值赋值,需要指定枚举的类型。
enum Toward:Int {
case Forward , Back , Left , Right
}
这时,枚举中的四个元素就被默认赋值从0 开始的整数。
let goTo = Toward.Left
print(goTo.toRaw())
//输出为2
也可以手动给每个枚举元素赋值
enum Toward:Int {
case Forward = 2, Back , Left = 20 , Right
}
当给某一个元素赋值后,后面的元素会根据该元素的值依次赋值。let goTo = Toward.Back
print(goTo.toRaw())
//输出为3print (Toward.Right.toR