微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift学习笔记(20)-枚举

一个变量有固定的几个取值的时候,建议用枚举,比如说星期,月份等….

// 枚举类型定义的数据类型的取值,只能是 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐