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("不知是何年何月")
}
网友评论