zoukankan      html  css  js  c++  java
  • 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
    }
    时光见证了成长,还很无知,我想一点点幼稚转为有知!
  • 相关阅读:
    Java实现 LeetCode 69 x的平方根
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 68 文本左右对齐
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 67 二进制求和
    Java实现 LeetCode 66 加一
    Java实现 LeetCode 66 加一
    CxSkinButton按钮皮肤类
  • 原文地址:https://www.cnblogs.com/foreveriOS/p/5563775.html
Copyright © 2011-2022 走看看