zoukankan      html  css  js  c++  java
  • 枚举与可选值

    枚举的定义和使用

    enum Gender {
       case Male
       case Female //两种情况
       
    }
    let kangkang: Gender = .Male //用枚举
    
    switch kangkang {
    case .Male:
       print("nan ren")
    case Gender.Female:
       print("nv")
    }  //用枚举来判断

    用枚举后面可以存数据

    enum Gender {
       case Male(String)
       case Female(Int,String)  //表示可以关联任意类型,每个case关联的数据可以不一样
    
    }
    
    let kang = Gender.Male("") //存了一个男人,int类型不用""号
    switch kang {
    case .Male(let x):
       print("zhe shi ge (x)")
    case .Female:
       print("女")
    }

    枚举的下标默认重0开始,并且下标不能重复,否则报错。

    enum Status :Int{ //原生值,所有原生值都必须唯一
       case  UnApproved
       case Approved
       case X = 5  //=1 就报错
       case Y
       case XX
       
    }
    
    let goods = Status.Approved
    goods.rawValue

    声明一个可选值,可选值就是可以不给值,默认有一个值

    var str: String? = "asdfasdf" //str是一个可以设置nil的String    
    
    //enum Optional{case None case Some}
    str = nil
    let i: Int?  //如果声明的时候不赋值,默认就是nil
    //str.startIndex//会报错,因为此时str不是一个真正的String,所以没有startIndex

    两种方法解决optional的问题

    var str = "asddas"
    str = nil
    //
    第一种 str!.startIndex //强制变为String //第二种,optional binding if let s = str { print("(s)") } else { print("str 是nil值") }

    隐式的解封

    var str2: String! = "sadf" //称之为隐式的解封(implicitly unwrapped)
    //str2 = nil
    
    str2.startIndex

    optional chain 可选链

    class Person {
        var ci: ClassInfo?
    }
    class ClassInfo {
        var t:Teacher?
    }
    class Teacher {
        var name = "cj"
    }
    let p = Person()
    let t = Teacher()
    let ci = ClassInfo()
    ci.t = t
    p.ci = ci
    p.ci?.t?.name = "double zhang "
    p.ci?.t?.name
    p.ci!.t!.name  //可以强制解封
    if let n = p.ci?.t?.name { //也可以用可选绑定
        
    }
  • 相关阅读:
    常用软件整理列表
    红黑树的旋转(C语言)
    Linux 内核编译
    2017年9月11日
    2017年 9月10日
    2017年9月8号 开学第一天
    开始学习.net的第二天
    前端工作需要什么
    Kubernetes容器编排技术---Kubernetes基本概念和术语(一)
    监控工具之---Prometheus探索PromQL(二)
  • 原文地址:https://www.cnblogs.com/kangniuniu/p/4941010.html
Copyright © 2011-2022 走看看