当一个变量有固定的几个取值的时候,建议用枚举,比如说星期,月份等….
// 枚举类型定义的数据类型的取值,只能是 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)
//:## switch 语句匹配枚举值 // dayone 是接收枚举类型的值的一个变量,改变它的值,用.语法就可以了,如果不是匹配所有的情况,要加 default var dayTwo = weekDay.Tuesday switch dayTwo { case .Monday: print("星期一") case .Tuesday: print("星期二") default: print("其他") }
新特性 相关值
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()
原文链接:https://www.f2er.com/swift/322654.html