Swift枚举

枚举:功能是用来进行数据的描述区别于函数的作用

  • 1.为枚举类型指定一个原始值类型
import UIKit

/*
 枚举:功能是用来进行数据的描述
 */
//1.为枚举类型指定一个原始值类型
enum CharEnum : Character {
    case a = "A"
    case b = "B"
    case c = "C"
    case d = "D"
}
  • 2.原始类型为Int, 可以只设置第一个枚举值的原始值
//2.原始类型为Int, 可以只设置第一个枚举值的原始值
enum IntEnum : Int {
    case 一 = 1
    case 二
    case 三
    case 四
}
  • 3.通过rawValue属性来获取枚举的原始值
//创建枚举变量
var char = CharEnum.a
print(char)
//3.通过rawValue属性来获取枚举的原始值
var rawValue = char.rawValue
print(rawValue)
  • 4.枚举的相关值
//4.枚举的相关值
enum Shape {
    //圆形:设置圆心和半径
    case circle(center:(Double,Double), radius:Double)
    
    //矩形:设置中心,宽,高
    case rect(center:(Double,Double), width:Double, height:Double)
    
}

//创建圆形枚举实例
var circle = Shape.circle(center: (0,0), radius: 3)
//创建矩形枚举实例
var rect = Shape.rect(center: (0, 1), width: 10, height: 20)

//写一个函数,参数为Shape枚举类型
func shapeFunc(param: Shape) {
    switch param {
    case let .circle(center, radius):
        print("此圆的圆心为:\(center), 半径为\(radius)")
        
    case let .rect(center, width, height):
        print("此矩形的圆心为:\(center), 宽为\(width),高为\(height)")
    }
}


shapeFunc(param: circle)
shapeFunc(param: rect)
//打印:此圆的圆心为:(0.0, 0.0), 半径为3.0
//打印:此矩形的圆心为:(0.0, 1.0), 宽为10.0,高为20.0

  • 5.递归枚举
//5.递归枚举
func mathFunc(param: Int) -> Int {
    let temp  = param - 1
    if temp > 0 {
    //递归
        return mathFunc(param: temp) * param
    }else{
        return 1
    }
}

//测试
var result =  mathFunc(param: 5)
print(result)
//打印:120 (5! = 5*4*3*2*1 = 120)

  • 6.indirect关键字之枚举
//6.indirect关键字
enum Expression {
    //描述单个数字
    case num(param:Int)
    
    //表示加法运算,将Expression作为相关值参数类型
    indirect case add(param1: Expression,param2:Expression)
    
    //表示减法运算
    indirect case sub(param1: Expression,param2:Expression)
    
    //表示乘法运算
    indirect case mul(param1: Expression,param2:Expression)
    
    //表示除法运算
    indirect case div(param1: Expression,param2:Expression)
}


//应用:使用Expression枚举来描述复合表达式:  ((5+5)*2-8)/2

//创建单值5
var num5 = Expression.num(param: 5)

//进行表达式5+5的描述
var exp1 = Expression.add(param1: num5, param2: num5)

//创建单值2
var num2 = Expression.num(param: 2)

//进行表达式(5+5)*2的描述
var exp2 = Expression.mul(param1: exp1, param2: num2)

//创建单值8
var num8 = Expression.num(param: 8)

//进行表达式(5+5)*2-8的描述
var exp3 = Expression.sub(param1: exp2, param2: num8)

//进行表达式((5+5)*2-8)/2的描述
var expFinal = Expression.div(param1: exp3, param2: num2)

实际应用:

//实现一个函数来进行四则混合运算
func expressionFunc(param: Expression) -> Int {
    switch param {
    case let .num(param):
        return param
    case let .add(param1, param2):
        return expressionFunc(param: param1) + expressionFunc(param: param2)
    case let .sub(param1, param2):
        return expressionFunc(param: param1) - expressionFunc(param: param2)
    case let .mul(param1, param2):
        return expressionFunc(param: param1) * expressionFunc(param: param2)
    case let .div(param1, param2):
        return expressionFunc(param: param1) / expressionFunc(param: param2)
    }
}

//调用函数
var expResult =  expressionFunc(param: expFinal)
print(expResult)
//打印:6

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 与C,Objective-C中的枚举相比,Swift中枚举功能更强大。它支持很多只有类才有的特性,如:Proper...
    YY323阅读 908评论 0 6
  • Swift 枚举(enum)详解 [TOC] 本文将介绍Swift中枚举的一些用法和其底层原理的一些探索,以及探索...
    just东东阅读 16,915评论 6 22
  • 枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。 如果你熟悉 C 语言,...
    CDLOG阅读 378评论 0 0
  • 在 Swift 中,枚举类型是一等(first-class)类型。它们采用了很多在传统上只被类(class)所支持...
    小驴拉磨阅读 353评论 0 0
  • 枚举为一组相关的值定义了一个共同的类型,使得可以在代码中以类型安全的方式来使用这些值。 如果熟悉 C 语言,会知道...
    穷人家的孩纸阅读 901评论 1 4

友情链接更多精彩内容