枚举值

2019-12-29  本文已影响0人  Harely
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("不知是何年何月")
}
上一篇 下一篇

猜你喜欢

热点阅读