Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Swift开篇006->枚举大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

PART_A 枚举简介 定义:一组相关的值定义了一个共同的枚举类型 语法格式 enum Direction { case East case South case West case North case NorthWest, EastSouth // 多个成员值在一行时,可用逗号分开 } 类型推断 var currentDirection = Dire

PART_A 枚举简介

  1. 定义:一组相关的值定义了一个共同的枚举类型

  2. 语法格式

    enum Direction {
        case East
        case South
        case West
        case North
        case NorthWest,EastSouth @H_450_46@// 多个成员值在一行时,可用逗号分开
    }
  3. 类型推断

    var currentDirection = Direction.East 
    
    @H_450_46@// 当类型已被推断出,可用简短语句(省略枚举类型名)来设置值:._
    currentDirection =.south
  4. 使用Switch匹配枚举值

    • switch需要穷举枚举成员,可以使用default分支来涵盖所有未明确处理的枚举成员

      var currentDirection = Direction.East           
          switch currentDirection {
          case .East:
              print("East")
          case .south:
              print("South")
          case .West:
              print("West")
          case .North:
              print("North")
          case .NorthWest,.EastSouth:
              print("Other")
          default:
              print("Default")
          }

PART_B 关联值

  1. 定义:将枚举成员使用元组组合成关联值

  2. 注意:同一变量可被分配成不同类型的关联值,但同一时刻仅能存储为一种类型

  3. 语法格式

    enum Person {
        case Male(String,int)
        case Female(String,String)
    }
    
    func test() {
        var p1 = Person.Male("zhangsan",28)
    
        switch p1 {
        case .Male(let name,let agE):
            print("\(Name),\(agE)")
    
        @H_450_46@// 元组成员类型相同时,可提出类型至case后面
        case let .Female(name,desc): 
            print("\(Name),\(desc)")
        }
    }

PART_C1 原始值:原始值的类型必须相同

  1. 定义:即认值. 对于一个特定的枚举成员,其原始值始终不变

  2. 说明

    • 原始值类型可为字符、字符串、任意整型值、任意浮点型值

    • 每个原始值在枚举声明中必须是唯一的

    • 系统提供方法获取原始值:rawValue

  3. 语法格式

    enum Originstr: String {
        case str1 = "hi"
        case str2 = "how are you"
    }

PART_C2 原始值的隐式赋值

  1. 当使用整数作为原始值,隐式赋值依次递增1. 若第一个枚举成员未设置原始值,认为0

  2. 当使用字符串作为原始值,每个枚举成员的隐式原始值为该枚举成员的名称

    @H_450_46@// 枚举类型一、星球(整型)
    enum Planet: Int {
        case Mercury = 1,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune
    }
    
    @H_450_46@// 枚举类型二、方位(字符串)
    enum CompassPoint: String {
        case North,South,East,West
    }
    
    @H_450_46@// 使用 rawValue 取认原始值
    let earthsOrder = Planet.Earth.rawValue @H_450_46@// earthOrder 值为 3
  3. 使用原始值初始化枚举实例

    let possiblePlanet = Planet(rawValue: 7)
    @H_450_46@// possiblePlanet类型为可选值:Planet?
    @H_450_46@// 越界将返回 nil,否则将对应星球赋值给 possiblePlanet

PART_D 递归枚举(indirect):情况可被穷举时,适合数据建模

  1. 定义

    • 方式一

      enum ArithmeticExpression {
          case Num(int)
          indirect case Add(ArithmeticExpression,ArithmeticExpression)
          indirect case Multiple(ArithmeticExpression,ArithmeticExpression)
      }
    • 方式二:所有成员可递归时,将 indirect 放在 enum 声明前

      indirect enum ArithmeticExpression2 {
          case Num(int)
          case Add(ArithmeticExpression,ArithmeticExpression)
          case Multiple(ArithmeticExpression,ArithmeticExpression)
      }
      @H_450_46@// 定义运算方法
      func test(expression: ArithmeticExpression) -> Int {
          switch expression {
          case let .Num(value):
              return value
          case let .Add(a,b):
              return test11(a) + test11(b)
          case let .Multiple(a,b):
              return test11(a) * test11(b)
          }
      }
      // 调用运算方法、递归枚举进行运算
      let three = ArithmeticExpression.Num(3)
      let four = ArithmeticExpression.Num(4)
      let sum = ArithmeticExpression.Add(three,four)
      let result = ArithmeticExpression.Multiple(sum,ArithmeticExpression.Num(5))@H_450_46@ // result 值为 35

以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com

大佬总结

以上是大佬教程为你收集整理的Swift开篇006->枚举全部内容,希望文章能够帮你解决Swift开篇006->枚举所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。