美文网首页
Swift枚举

Swift枚举

作者: 凯文Kevin21 | 来源:发表于2023-04-08 00:37 被阅读0次

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

  • 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

相关文章

网友评论

      本文标题:Swift枚举

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