当一个变量有固定的几个取值的时候,建议用枚举,比如说星期,月份等….
@H_404_2@// 枚举类型定义的数据类型的取值,只能是 case 后面的取值 enum weekDay:String{ case Monday case Tuesday case Wedesday case Thursday case Friday case Saturday = "星期六" case Sunday } var dayone = weekDay.Friday // 如果要改变 dayone 的值,用.就可以访问 dayone = .Monday // 如果string 类型的枚举,.case 没有设定原始值的话,默认就是 case 的名字 // 用. rawValue 访问原始值 let r = dayone.rawValue print(r) //如果设置了初始值,就会输出设置的初始值 dayone = .Saturday print(dayone.rawValue) @H_404_2@//:## switch 语句匹配枚举值 // dayone 是接收枚举类型的值的一个变量,改变它的值,用.语法就可以了,如果不是匹配所有的情况,要加 default var dayTwo = weekDay.Tuesday switch dayTwo { case .Monday: print("星期一") case .Tuesday: print("星期二") default: print("其他") }新特性 相关值
@H_404_2@enum CustTime{ case AM(hour:Int,minute:Int) case PM(hour:Int,minute:Int) case zero } var mytime = CustTime.AM(hour: 8,minute: 20) switch mytime { case .AM(let myhour,let myminute): print("现在是上午\(myhour)点\(myminute)分") case .PM(let myhour,let myminute): print("现在是下午\(myhour)点\(myminute)分") case .zero: print("0点") } // 枚举中声明一个方法,enum CustTime1{ case AM(hour:Int,minute:Int) case zero func saytime() { switch self { case .AM(let myhour,let myminute): print("现在是上午\(myhour)点\(myminute)分") case .PM(let myhour,let myminute): print("现在是下午\(myhour)点\(myminute)分") case .zero: print("0点") } } } var mytime1 = CustTime1.AM(hour: 8,minute: 20) var yourtime = CustTime1.PM(hour: 4,minute: 28) // 这个时候谁调用,方法中的 self 指的就是谁 mytime1.saytime() yourtime.saytime() // 枚举扩展,和 oc 中的类扩展功能差不多,用 extension 关键字 extension CustTime{ func pritTime(){ switch self { case .AM(let myhour,let myminute): print("现在是下午\(myhour)点\(myminute)分") case .zero: print("0点") } } } mytime.pritTime()