枚举值

作者: Harely | 来源:发表于2019-12-29 13:39 被阅读0次
    enum WeekDay {
    
       case Monday
    
       case Tuesday
    
       case Wednesday
    
       case Thursday
    
       case Friday
    
       case Saturday
    
       case Sunday
    
    }
    
    func enumTest () {
        let day:WeekDay = .Wednesday
    
        switch day {
        case .Wednesday:
            print("今天是星期三")
            
        case .Saturday:
            print(":)")
            
        case .Sunday:
            print(":)")
            
        default:  //使用枚举表示来表示其它的选项,否则编译can't 通过
            print(":(")
         
        }
    }
    
    //调用
    self.enumTest()
    

    打印:
    今天是星期三
      但是这样会报出一个丑陋的黄色警告⚠️:Switch condition evaluates to a constant,这可能是编译器认为变量在函数内部是不变造成的。可以把这个变量作为类的常量属性就不会报错了。

    class ViewController: UIViewController {
          let day:WeekDay = .Wednesday
    }
    

      如果没有default我们需要把枚举的每一项都要列举出来,否则会编译不通过,所以我们可用default来进行偷懒,来表示其他case情况。


    枚举关联值

    **关联值**:枚举的枚举项每一个都有附加信息,来扩充这个枚举项的信息表示,如下:

    enum Shape {
     
        case Rectangle(CGRect)
    
        case Circle(CGPoint,Int)
     
    }
    

    枚举原始值

    枚举原始值:每一个枚举项提供一个默认值,这个默认值是在编译的时候就确定的。

    enum WeekDayWithRaw : String {  //后面有一个String,表示是一个字符串类型的枚举
     
        case Monday = "1. Monday"
    
        case Tuesday = "2. Tuesday"
    
        case Wednesday = "3. Wednesday"
    
        case Thursday = "4. Thursday"
    
        case Friday = "5. Friday"
    
        case Saturday = "6. Saturday"
    
        case Sunday = "7. Sunday"
     
    }
    

    通过原始值进行初始化:

    let day = WeekDayWithRaw(rawValue: "3. Wednesday") //是一个可选的枚举,也就是Optionals 的类型
           
    if let tday = day {
       print("这个 day 是: \(tday)")
    }else{
       print("init fail")
    }
    
    

    打印
    这个 day 是: Wednesday

    枚举输出

    let day = WeekDayWithRaw.Saturday.rawValue
    print("这个 day 是: \(day)")
    

    打印:
    这个 day 是: 6. Saturday



    初始化不存在的值,用可选判定

    let day = WeekDayWithRaw(rawValue: "No Exist Value")
    if let thisDay = day {
        print("this day is: \(thisDay)")
    }else {
        print("不知是何年何月")
    }
    

    相关文章

      网友评论

          本文标题:枚举值

          本文链接:https://www.haomeiwen.com/subject/fbyyoctx.html