Swift 可选项 发表于 2019-08-05 更新于 2019-08-06 分类于 Swift 本文字数: 2.9k 阅读时长 ≈ 3 分钟 可选项的定义与简单使用1234567891011121314151617181920212223242526272829303132333435363738/** 定义 可选项使用? 解包使用!,准备计算 */ func demo1() { //定义y,没有初始化 let y:Int? //给常量设置数值,初始化的工作能做一次 y = 20 //再次修改常量会报错 //y = 30 print(y) // *** var 的可选值为nil // *** let 的可选值没有默认值 var x:Int? x=10 x=100 print(x) } func demo(){ //1.原始的可选项定义 //none:没有值,或者some某一类值 let x:Optional = 10 print(x) //2.简单定义 //'?'用来定义y是一个可选的Int类型,可能没有值,也有可能是个整数 let y:Int? = 20 print(y) //不同类型之间的值不能直接运算!如果没有值,是nil。nil不是任何数据类型,不能参与计算 //print(x+y) // '!'强行解包 -从可选值中强行获取对应的非空值 //程序员必须为每一个!负责 //程序中要少用! print(x!+y!) } 可选项的判断 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 func demo4(name:String?,age:Int?) { if let name = name,let age = age { //非空的name age仅在{}有效 print(name + String(age)) } //guard let和if let的技巧 //使用同名的变量接受值,在后续使用的都是非空值,不需要解包 //可以避免起名字的烦恼 guard let name = name,let age = age else { print("姓名或年龄为nil") return } print(name + String(age)) } // MARK:-guard 守卫/守护 //guard let和iflet 刚好相反 func demo3() { let oName:String? = "老王" let oAge:Int? = 10 //guard let守护一定有值,如果没有直接返回 guard let name = oName,let age = oAge else { print("姓名或年龄为nil") return } //代码运行至此,一定有值 //通常判断是否有值后,会做具体的逻辑实现 通常代码多 //如果使用if let 凭空多了一层分支,guard是降低分支层次的方法 print(name + String(age)) } // MARK: -if let /var 连用语法,目的就是判断值 func demo2() { let oName:String? = "老王" let oAge:Int? = 30 if oName != nil && oAge != nil{ print(oName! + String(oAge!)) } //if let 连用,判断对象的值是否为nil,{}内一定有值,不需要解包 //if var 连用, {}可以対值进行修改 if var name = oName, let age = oAge { name = "老李" //进入分支后,name和age有值,不需要解包 //name age作用域仅在{} print(name + String(age)) } } // MARK: -?? func demo1(x:Int?,y:Int?) { /** ??是一个简单的三目 -如果有值,使用值 -如果没有值,使用??后的值替代 */ print((x ?? 0)+(y ?? 0)) let name:String? = "老王" print((name ?? "")+"你好") // ?? 操作符的优先级低,在使用的时候,最好用()包一下 print(name ?? ""+"你好") } func demo(x:Int?,y:Int?){ //1.强行解包有风险// print(x! + y!) //2.使用if判断 //但是 if x != nil && y != nil { print(x!+y!) }else{ print("x或者y为nil") } } 本文作者: Mr.Zhao 本文链接: https://wesukilayezcy.github.io/2019/08/05/Swift-可选项/ 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! -------------本文结束感谢您的阅读-------------