15.Swift学习之枚举

简介: 枚举介绍概念介绍枚举定义了一个通用类型的一组相关的值,可以在代码中以一个安全的方式来使用这些值Swift中的枚举是一等类型, 它可以像类和结构体一样增加属性和方法在 C/OC 语言中枚举指定相关名称为一组整型值,而Swift 中的枚举更加...

枚举介绍

  • 概念介绍
    • 枚举定义了一个通用类型的一组相关的值,可以在代码中以一个安全的方式来使用这些值
    • 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")
    }
}
目录
相关文章
|
20天前
|
Swift iOS开发
Swift 枚举
10月更文挑战第28天
25 0
|
6月前
|
人工智能 物联网 API
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
|
6月前
|
存储 定位技术 Swift
【Swift 开发专栏】Swift 中的枚举与结构体
【4月更文挑战第30天】本文探讨了Swift中的枚举与结构体,包括它们的定义、用法及差异。枚举用于表示有限状态或选项,如游戏状态;结构体适合表示具有特定属性和行为的数据,如商品信息。两者均可定义属性和方法,作为函数参数。枚举以整数存储,不可继承,结构体按属性存储且可继承,更灵活。理解两者特点有助于提升编程效率。
38 0
|
6月前
|
Swift
Swift 中的枚举(Enum)
Swift 中的枚举(Enum)
51 2
|
存储 编译器 Swift
Swift-进阶 08:枚举enum
Swift-进阶 08:枚举enum
624 1
Swift-进阶 08:枚举enum
|
Swift
Swift实用小册07:枚举的创建、使用、遍历、关联值、原始值
Swift实用小册07:枚举的创建、使用、遍历、关联值、原始值
425 0
Swift实用小册07:枚举的创建、使用、遍历、关联值、原始值
|
存储 编译器 Swift
Swift5.0 - day2-流程控制、函数、枚举(下)
Swift5.0 - day2-流程控制、函数、枚举(下)
81 0
Swift5.0 - day2-流程控制、函数、枚举(下)
|
编译器 Swift C++
Swift5.0 - day2-流程控制、函数、枚举(上)
Swift5.0 - day2-流程控制、函数、枚举(上)
139 0
Swift5.0 - day2-流程控制、函数、枚举(上)
Swift - Enum枚举 源码分析
Swift - Enum枚举 源码分析
 Swift - Enum枚举 源码分析
【Swift4】(7) 枚举 | 应用
【Swift4】(7) 枚举 | 应用
117 0