Swift_枚举


//初始类型
enum test {
    case fef
    case sdf
}


//关联值
enum test2 {
    case a(Int,Float,Bool,Int)
    case b(String)
}


//原始值
enum test31:Character {
    case a = "r"
    case b = "\n"
    case c = "s"
}

//原始值隐式赋值
enum test32:Int{
    case a = 1,b,c,d

}

enum test33:String {
    case a = "fsdf"
}



//递归枚举
indirect enum ArithmeticExpression {
    case number(Int)
    case addition(ArithmeticExpression, ArithmeticExpression)
    case multiplication(ArithmeticExpression, ArithmeticExpression)
}

import UIKit

class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()

        //递归枚举
        let five = ArithmeticExpression.number(5)
        let four = ArithmeticExpression.number(4)
        let sum = ArithmeticExpression.addition(five, four)
        let product = ArithmeticExpression.multiplication(sum, ArithmeticExpression.number(2))
        
        mapFunc()
    }
    
    func evaluate(_ expression: ArithmeticExpression) -> Int {
        switch expression {
        case let .number(value):
            return value
        case let .addition(left, right):
            return evaluate(left) + evaluate(right)
        case let .multiplication(left, right):
            return evaluate(left) * evaluate(right)
        }
    }
    
    func mapFunc() {
        
        //普通枚举
        var enum_a = test.fef
        enum_a = test.fef
        
        
        switch enum_a {
            
        case .fef:
            break;
            
        case .sdf:
            break;
            
        default:
            break;
        }
        
        
        //关联值枚举
        var enum_b = test2.a(10, 234.2, true, 0)
        
        switch enum_b {
            //常量每一个值
        case .a(let one, let two, let three, let four):
            print("\(one)\n\(two)\n\(three)\n\(four)\n")
            
        case .a(101, 234.2, true, 0):
            print("1")
            break
            
        case .a(10, 234.2, true, 0):
            print("2")
            break
            
        case .b("te"):
            print("3")

            break
            
        default:
            print("dfsd")
            
        }
        

        
        //原始值、原始值隐式赋值
        var value_num = test32.c.rawValue  //value_num = 3
        
        let value_num2 = test31.a.rawValue //value_num2 = "r"
        
        
        
        //使用原始值初始化枚举实例
        let f = 3
        if let s = test32(rawValue:f) {
            
            switch s {
            case .a:
                break
                
            case .b:
                break
                
            case .c:
                break
                
            case .d:
                break
                
            default:
                print("no value for f")
            }
        }
        
    }
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值