美文网首页工作生活
swift 枚举类型

swift 枚举类型

作者: sttech | 来源:发表于2019-07-02 09:38 被阅读0次

    关联值

    • 有时候会将枚举变量的成员值和其他类型的关联存储在一起,会非常有用
      eg 1

    enum Score{
    case points(Int)
    case grade(Character)
    }
    var score = Score.points(96)
    score = .grade("A")
    switch score {
    case let .points(i):
    print(i,"points")
    case let .grade(i):
    print(i,"grade")
    }

    eg 2

    enum Data{
    case digit(year :Int,mounth:Int,day:Int)
    case string(String)
    }
    var data = Data.digit(year:2011,mounth:07 ,day:16)
    data = .string("2011-07-16")
    switch data {
    case .digit(let year,let mounth,let day):
    print(year,mounth,day)
    case let .string(value):
    print(value)
    }

    eg3

    enum Passwd{
    case number(Int,Int,Int,Int)
    case gester(String)
    }
    var pwd = Passwd.gester("123456")
    pwd = .number(1,1,1,1)
    switch pwd {
    case let .number(n1,n2,n3,n4):
    print(n1,n2,n3,n4)
    case let .gester(value):
    print(value)
    }

    原始值

    • 枚举变量可以使用相同类型的默认值预先关联,这个默认值叫做原始值

    eg4

    enum Direction :String{
    case north = "north"
    case south = "south"
    case east = "east"
    case west = "west"
    } Direction 和Direction2 等价
    // 这个会自动分配原始值
    enum Direction2 :String{
    case north,south,east,west
    }

    原始值

    • 枚举成员可以使用相同类型的默认值进行关联,这个默认值就叫做原始值


      原始值

    隐式原始值

    • 如果枚举的原始值是string Int 类型 swift会自动分配原始值 (string 成员的名字和关联的名字是一样的 int 从0 开始依次往后排序)


      隐式原始值

    递归枚举

    递归枚举

    以上两种枚举定义方式是一样的

    相关文章

      网友评论

        本文标题:swift 枚举类型

        本文链接:https://www.haomeiwen.com/subject/nemacctx.html