关联值
- 有时候会将枚举变量的成员值和其他类型的关联存储在一起,会非常有用
eg 1
enum Score{
case points(Int)
case grade(Character)
}
var score = Score.points(96)
score = .grade("A")
switch score {
case let .points(i):
print(i,"points")
case let .grade(i):
print(i,"grade")
}
eg 2
enum Data{
case digit(year :Int,mounth:Int,day:Int)
case string(String)
}
var data = Data.digit(year:2011,mounth:07 ,day:16)
data = .string("2011-07-16")
switch data {
case .digit(let year,let mounth,let day):
print(year,mounth,day)
case let .string(value):
print(value)
}
eg3
enum Passwd{
case number(Int,Int,Int,Int)
case gester(String)
}
var pwd = Passwd.gester("123456")
pwd = .number(1,1,1,1)
switch pwd {
case let .number(n1,n2,n3,n4):
print(n1,n2,n3,n4)
case let .gester(value):
print(value)
}
原始值
- 枚举变量可以使用相同类型的默认值预先关联,这个默认值叫做原始值
eg4
enum Direction :String{
case north = "north"
case south = "south"
case east = "east"
case west = "west"
} Direction 和Direction2 等价
// 这个会自动分配原始值
enum Direction2 :String{
case north,south,east,west
}
原始值
-
枚举成员可以使用相同类型的默认值进行关联,这个默认值就叫做原始值
原始值
隐式原始值
-
如果枚举的原始值是string Int 类型 swift会自动分配原始值 (string 成员的名字和关联的名字是一样的 int 从0 开始依次往后排序)
隐式原始值
递归枚举
递归枚举以上两种枚举定义方式是一样的
网友评论