您现在的位置是:首页 > 文章详情

15.Swift学习之枚举

日期:2018-10-15点击:609

枚举介绍

  • 概念介绍
    • 枚举定义了一个通用类型的一组相关的值,可以在代码中以一个安全的方式来使用这些值
    • Swift中的枚举是一等类型, 它可以像类和结构体一样增加属性和方法
    • 在 C/OC 语言中枚举指定相关名称为一组整型值,而Swift 中的枚举更加灵活
      • 不必给每一个枚举成员提供一个值
      • Swift 中的枚举可以提供的值类型有:字符串,字符,整型值,浮点值等
  • 枚举类型的语法
    • 使用enum关键词并且把它们的整个定义放在一对大括号内
enum SomeEnumeration { // enumeration definition goes here } 
enum Method{ case Add case Sub case Mul case Div } let selectMethod = Method.Sub switch (selectMethod){ case Method.Add: print("加法") case Method.Sub: print("减法") case Method.Mul: print("除法") case Method.Div: print("乘法") default: print("都不是") } 

枚举的定义

  • 定义方式一
    • case关键词表明新的一行成员值将被定义
    • 不像 C 和 Objective-C 一样,Swift 的枚举成员在被创建时不会被赋予一个默认的整数值
    • 下面的例子中,North,South,East和West不是隐式的等于0,1,2和3
enum CompassPoint { case North case South case East case West } 
  • 定义方式二:多个成员值可以出现在同一行上
enum CompassPoint { case North, South, East,West } 

枚举赋值

  • 枚举类型赋值可以是字符串/字符/整型/浮点型
    • 如果有给枚举类型赋值,则必须在枚举类型后面明确说明具体的类型
enum CompassPoint : Int { case North = 1 case South = 2 case East = 3 case West = 4 } enum CompassPoint : Double { case North = 1.0 case South = 2.0 case East = 3.0 case West = 4.0 } enum CompassPoint : String { case North = "North" case South = "South" case East = "East" case West = "West" } 

枚举类型推断

  • 前面的例子中,在使用枚举的时候,是通过枚举.值的形式来访问的,其实由于Swift的类型推断非常强大,如果枚举类型确定了,在访问值的时候可以用.值的形式来访问
enum Method { case Add case Sub case Mul case Div func method(){ } } //已经明确a是一个Method类型 后面访问可以简写 let a:Method = .Add let selectMethod = Method.Sub switch (selectMethod){ case .Add: print("加法") case .Sub: print("减法") case .Mul: print("除法") case .Div: print("乘法") default: print("都不是") } 

枚举的原始值

  • C/OC中枚举的本质就是整数,所以C/OC中的枚举是有原始值的,默认是从0开始,而Swift中的枚举默认是没有原始值的, 但是可以在定义时告诉系统让枚举有原始值
  • 注意:
    • 原始值区分大小写
    • 通过rawValue可以获取原始值
    • 通过rawValue返回的枚举是一个可选型,因为原始值对应的枚举值不一定存在
    • 如果想指定第一个元素的原始值之后,后面的元素的原始值能够默认+1 , 枚举一定是 Int 类型
enum Planet:Int { case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune } let planet:Planet = .Mars //打印4 print(planet.rawValue) //p是一个可选型 let p = Planet(rawValue: 3) if let p = p { switch p { case .Mercury: print("Mercury") case .Venus: print("Venus") case .Earth: print("Earth") case .Mars: print("Mars") case .Jupiter: print("Jupiter") case .Saturn: print("Saturn") case .Uranus: print("Uranus") case .Neptune: print("Neptune") } } 
原文链接:https://yq.aliyun.com/articles/670810
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章