1.7 Swift可选值, 隐式解析可选 swift 中的? !

/**

         可选值 optionals

         加上个问号

         两种状态一种是有值,另一种是没有值nil

         

         可选值可以用 if语句来进行判断的

         */

        

        // 这个就是可选值,有值是整型9

        let optionValue:Int? = 9

        print(optionValue)

        // Optional(9)

        

        if optionValue !=nil

        {

            print(optionValue)

            // Optional(9)

        }

        

        print("------------->>")

        // 这里的!表示对可选值的一个强制解析 (unwrapping解包)

        let sValue:Int = optionValue!

        print(sValue)

        // 9

        


        // 没有值

        let optionValue1:Int? =nil

        

        if optionValue1 ==nil

        {

            print(optionValue)

            // Optional(9)

        }

        

        print("------------->>")

        // 注意这个不是编译时的错误,是运行时的错误

        // fatal error: unexpectedly found nil while unwrapping an Optional value

        // 空的对象,不可以对它进行强制解析,加上叹号强制解包

//        var sValue1: Int = optionValue1!

//        print(sValue1)


        

        // 可选绑定

        ifvar sValue1 = optionValue1

        {

            print(sValue1)

        }

        

        

        

        /**

         隐式解析可选类型,两种状态

         有值,没有值nil

         */

        

        let imOptValue:Int! = 111

        

        print("------------->>")

        if imOptValue !=nil {

            print(imOptValue)

        }

        

        print("iValue------------->>")

        // 可选绑定

        iflet iValue = imOptValue {

            print(iValue)

        }

        

        

        print("iValue2------------->>")

        // 这个地方我们定义了隐式可选类型后呢,不需要在强制解包(加叹号),

        let iValue2:Int = imOptValue

        print(iValue2)

        

     

        

        /**

         无论是普通的可选型,还是隐式的可选型,

         对于一个没有值的进行解包都会引起一个运行时的错误

         */



  /**

         1.常量和变量

         Swift语言中是用let来定义常量,并且要初始化。var来定义变量,

         let或者var后面申明类型,冒号+空格,然后再加上类型名称。


         

         2.optional(可选)变量

         可选变量用于处理值缺失的情况,有点类似于OC中的nil,可以用于任何类型上,不仅仅是类,不过更加安全。Swift是类型安全的一门语言,可以很少申明类型。

         附:SwiftObjective-Cnil的区别

         1OC中,nil是一个指向不存在对象的指针;

         2Swift中,nil不是指针,它是一个确定的值,用于表示值缺失。任何类型的可选状态都可以设置为nil,不只是对象类型;

         

         

         3.深入了解Optional变量

         Optional其实就是一个enum,里面有NoneSome类型。nil就是Optional.None,非nil就是Optional.Some,通过Some(T)包装原始值,所以在是用Optional的时候要进行拆包。

         声明一个可选类型的时候要在类型后面加上?如:var str : String?

         var strValue String?

         意思不是我声明了一个OptionalString”,而是我声明了一个Optional类型值。

         

         对一个可选类型的值,需要进行拆包才不会报错。

         拆包有两种方式,如下:

         1Optional Binding

         如: 

         if let str = strValue

         {

            let hashValue = str.hashValue

         }

         */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值