Swift-枚举 enum

小知识,大挑战! 本文主要介绍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只有单个的值

猜你喜欢

转载自juejin.im/post/7017772335000387621