本文主要介绍enum的常见使用形式,
1、常规枚举写法
enum Week{
case north
case souch
case east
case west
}
<!--2、写法二-->
//也可以直接一个case,然后使用逗号隔开
enum Week{
case MON, TUE, WED, THU, FRI, SAT, SUN
}
2、字符串类型枚举 枚举值和原始值rawValue
的关系为case 枚举值 = rawValue原始值
enum Week{
case north = “north”
case souch = “souch”
case east = “east”
case west = “west”
}
如果不想写枚举值后的字符串,也可以使用隐式RawValue
分配,如下所示
<!--String类型-->
enum Week: String{
case north, souch, east = "east", west
}
<!--Int类型-->
//MON是从0开始一次递推,而WED往后是从10开始一次递推
enum Week: Int{
case north, souch, east = 3, west,
}
如果enum没有声明类型,是没有rawValue
属性的
3、如何访问枚举值
public enum testEnum: String {
case MON = "MON____"
case TUE = "TUE"
case WED = "WED"
case THU = "THU"
case FRI = "FRI"
case SAT = "SAT"
case SUN = "SUN"
}
print(testEnum.MON)
print(testEnum.MON.rawValue)
let srw: String = testEnum.MON.rawValue
print("-------\(srw)")
var allcase = testEnum.allCases
print("-------\(allcase)")
let all = testEnum.allCases.map({"\($0)"}).joined(separator: ",")
print(all + "---------");
打印结果如下 ----------------------------------------------------------
MON
MON____
-------MON____
-------[MallProjectSwift.testEnum.MON, MallProjectSwift.testEnum.TUE, MallProjectSwift.testEnum.WED, MallProjectSwift.testEnum.THU, MallProjectSwift.testEnum.FRI, MallProjectSwift.testEnum.SAT, MallProjectSwift.testEnum.SUN]
MON,TUE,WED,THU,FRI,SAT,SUN---------
4关联值
如果希望用枚举表示复杂的含义,关联更多的信息,就需要使用关联值了
例如,使用enum表达一个形状,其中有圆形、长方形等,圆形有半径,长方形有宽、高,我们可以通过下面具有关联值的enum来表示
//注:当使用了关联值后,就没有RawValue了,主要是因为case可以用一组值来表示,而rawValue是单个的值
enum ShapeOfPen{
//case枚举值后括号内的就是关联值,例如 radius
case circle(radius: Double)
case rectangle(width: Int, height: Int)
}
具有关联值的枚举,就没有rawValue属性
了,主要是因为一个case可以用一个或者多个值
来表示,而rawValue只有单个的值