• swift枚举_003_swift枚举类型


    //: Playground - noun: a place where people can play
    
    import UIKit
    
    //------枚举---------//
    
    //1.Swift中的枚举
    //描述一个人的性别(0:男,1:女,2:不详)
    
    //enum Sex { //枚举类型
    //    case Male //枚举值
    //    case Female
    //    case Unknown
    //
    //}
    //
    ////定义枚举变量
    //var mySex : Sex = Sex.Female
    //mySex = .Male
    //
    //var yourSex : Sex = .Unknown
    //
    //if yourSex == .Unknown {
    //    
    //    print("此人似男非女")
    //}
    //
    ////2.枚举和switch的结合使用
    ///*
    //为了保证安全性,switch和枚举类型结合使用时:
    //(1)将所有枚举值列出,所以情况都要考虑
    //(2)或者使用default来表示默认情况
    //*/
    //switch mySex {
    //case Sex.Male:
    //    print("男生")
    //case Sex.Female:
    //    print("女生")
    ////case Sex.Unknown:
    ////    print("不详")
    //default:
    //    print("无法识别")
    //    
    //}
    
    //3.枚举的原始值
    //在Swift中枚举值不是默认为整型,和C,OC中不同。
    enum Sex : Int {
        case Male = 0
        case Female = 1
        case Unknown = 2
        
    }
    
    //打印枚举值的原始值
    print(Sex.Unknown.rawValue)
    
    //枚举原始值的类型在Swift中做了扩展:String, Character, Int, Float, Double
    //enum NewSex : String {
    //    case Male = "Male"
    //    case Female = "Female"
    //    case Unknown = "Unknown"
    //    
    //}
    
    //原始值的隐性赋值:
    //String:默认和枚举值名字相同
    //Int:默认从0开始,依次递增1
    enum NewSex: String{
        case Male, Female, Unknown
        
    }
    
    print(NewSex.Female.rawValue)
    
    //用原始值给变量做初始化
    var hisSex = Sex.Male
    
    //枚举构造器-->返回是一个可选类型,如果传入的原始值为不合法值,则返回nil
    var herSex = Sex(rawValue: 5)
    
    
    //可选绑定
    if let yourSex = Sex(rawValue: 10) {
        
        switch yourSex {
            
            case Sex.Male:
                print("男生")
            case Sex.Female:
                print("女生")
            case Sex.Unknown:
                print("不详")
          
            
        }
    } else {
        print("没有此性别")
            
    }
    
    //4.枚举的关联值(相关值):存储枚举值一些额外的信息,相关值可以是不同类型的数据
    //(1)基本语法
    enum Color {
        case Red(alpha:Float)
        case Blue(alpha:Float, Y:Float, L:Int)
        
    
    }
    
    var myColor:Color = Color.Red(alpha: 0.5)
    myColor = .Blue(alpha: 1, Y: 100, L: 100)
    
    
    //if myColor == Color.Red(alpha: 0.3) {
    //    
    //    
    //}
    
    switch myColor {
        
    case Color.Red(let alpha):
        print("red alpha = (alpha)")
        
    case Color.Blue(let a, let b, let c):
        print("Blue a=(a),b=(b),c=(c)")
        
    }
    
    enum BarCode {
        
        case UP
    }
    时光见证了成长,还很无知,我想一点点幼稚转为有知!
  • 相关阅读:
    c# DateTime 格式化输出字符串
    计算运行时长
    ubuntu helpers
    json.net omit member
    git 本地项目关联新repo
    c# DirectoryEntry LDAPS
    为视图或函数指定的列名比其定义中的列多
    Java反序列化漏洞学习笔记
    流量抓包
    软件安全策略-下
  • 原文地址:https://www.cnblogs.com/foreveriOS/p/5563775.html
Copyright © 2020-2023  润新知