zoukankan      html  css  js  c++  java
  • swift中为什么要创造出可选型?

    (1)因为nil这个东西,swift中没有就是没有。  Int?整型可选型,如果不提前声明,直接赋值变量 nil会报错 。
    可以将Int赋值给Int?   ,但是不能将Int?赋值给Int 。

    (2)不能将 普通 String 和可选型直接一起混用,必须 Unwrap 。也就是这样 在某个可选型变量后面加个!
    表示担保它一定不为nil  。这个 叫 强制解包 , 是有风险的。

     (3)swift提供了一种语法用来解包 ,let 也可以用var
     if let errorCode = errorCode {
        仅在这里面可以使用解包后的errorCode ,此时不需要加!
        但是出了花括号 ,errorCode又是可选型了。这是因为swift是严格的类型语言。
    }

    if let 这里可以用逗号隔开,对多个可选型进行解包 ,这里还可以用where关键字判断是否为某个值{

    (4)隐式解析可选:

    非Optional的变量必须在声明时或者构造器中进行初始化,但是如果想在viewDidLoad中初始化,所以只能声明Optional:var myLabel: UILabel? ,虽然我们确定在viewDidLoad 中初始化,并且在ViewController的生命周期内不会置为nil, 但是对myLabel操作时,每次依然要加上!来强制拆包

    myLabel!.text = "text"

    myLabel!.frame = CGRectMake(0,0,10,10)

    对于这种类型的值,我们可以直接这么声明 var myLabel: UILabel!,这种是特殊的Optional,称为Implicitly Unwrapped Optionals, 直译就是隐式拆包的Optional,就等于说你每次对这种类型的值操作时,都会自动在操作前补上一个!进行拆包

    (5)Swift 的nil和 Objective-C 中的nil并不一样。在 Objective-C 中,nil是一个指向不存在对象的指针。在 Swift 中,nil不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选都可以被设置为nil,不只是对象类型。

    此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935. 我的gitHub: (学习代码都在gitHub) https://github.com/nwgdegitHub/
  • 相关阅读:
    [武汉集训] Cliquers
    [NOI2017] 泳池
    [NOWCODER7] 小睿睿的方案
    动态dp初探
    [WC2008] 游览计划
    插头dp初探
    最小斯坦纳树初探
    2020ccpc总结
    Finding Palindromes
    最长非严格上升子序列的思考 && CF 1437E Make It Increasing
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/6866045.html
Copyright © 2011-2022 走看看