枚举与可选值
枚舉的定義和使用
enum Gender {case Malecase 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 UnApprovedcase Approvedcase X = 5 //=1 就報錯case Ycase 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.startIndexoptional 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 { //也可以用可選綁定 }?
轉載于:https://www.cnblogs.com/kangniuniu/p/4941010.html
總結
- 上一篇: Https 客户端与服务器交互过程梳理(
- 下一篇: linux命令:du,看文件大小