zoukankan      html  css  js  c++  java
  • Swift 可选值

    可选值(Optional value)有两种状态 1.它有一个值  2.它没有值

    Optional type是swift里面的一个新的概念

    上面的serverResponseCode就是一个Int?类型,上面代码代表serverResponseCode的两种不同状态

    在做一些不确定的操作的时候特别有用,比如当尝试把字符串转成数字的时候:

    如果转换成功,convertedNumber里面就存着123这个值,如果转换失败,则存储nil值

       nil在OC和swift中是不同的,在OC中nil是指向一个不存在对象的指针,而在swift中,nil代表可选值的状态是“值不存在”,所以在swift中,int等等基本类型的可选值也可以被赋值为nil

    如果在声明可选值的时候没有赋初值,可选值会自动获得nil值

    拆包(unwrapping)

    这里的!就是强制拆包(force unwrapping)操作,如果可选值没有值,又对可选值进行强制拆包操作,那么这时候会报出一个运行时错误。

    所以在强制拆包前总是要检查一下可选值是否为nil,上面的写法有些麻烦,swift提供一个简略的写法

    上面的“let actualNumber”也可以换成var actualNumber

    隐式已拆包可选值(Implicity Unwrapped Optionals)

    如果程序员可以保证一个可选值的总是有值的,而且频繁的拆包比较麻烦,这时可以使用Implicity Unwrapped Optionals

    相当于使用的时候都会自动拆包,声明使用!来代替?

    我的理解是在需要拆包的时候Implicity Unwrapped Optionals会自动拆包,在不需要拆包的时Implicity Unwrapped Optionals表现和普通的可选值是一样的

    需要拆包的时候会自动拆包:

    不需要拆包的时候表现与普通可选值一样:

  • 相关阅读:
    django2.0+连接mysql数据库迁移时候报错
    微信小程序路由跳转
    洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm
    洛谷P3143 [USACO16OPEN]钻石收藏家Diamond Collector
    洛谷P2677 超级书架 2
    洛谷P2676 超级书架
    洛谷P3146 [USACO16OPEN]248
    洛谷P1396 营救
    洛谷P1772 [ZJOI2006]物流运输
    P3102 [USACO14FEB]秘密代码Secret Code
  • 原文地址:https://www.cnblogs.com/CharlieSu/p/4422574.html
Copyright © 2011-2022 走看看