Swift_3.0_初级篇05_Optional_可选项

//Optional 是 Swift 的一大特色,
//定义变量的时, 如果指定是可选的,便是该变量有一个指定类型的值,也可以是nil
//定义变量的时, 如果在类型的后面添加一个 ?,表示该变量是可选的
//变量可选的默认值是nil
//常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值

        let x : Optional = 10
        // 常量 x 的类型 是 Optional 可选的 原始的可选项定义
        //  Optional 包括如下两种: 
        //  case none 没有值
        //  case some(Wrapped) 某一类值
        //  推导的 let x: Optional<Int>
        
        print(x) // 会警告  输出结果 Optional(10),提示这是一个可选值
        print(x!) //解包    输出 10
        print(x as Any) // 输出 10
       
        let y : Int? = 20
        // 简单的 定义 ' ? '  用来定义 y 是一个可选的 Int 类型, 可能没有值,也可能有一个整数
        print(y) // 输出 Optional(20)
        
        //let z : Int?   // Constant 'z' used before being initialized  常量 z 使用之前必须初始化
        
        //let y : Int? = nil //如果下面用 y 计算 会报错  unexpectedly found nil while unwrapping an Optional value //初学者最常犯的错误 : 在 解包的时候发现 nil
        
        // 不同数据类型不能直接运算 没有值 是 nil 不是任何数据类型,不能参与计算
        // print(x + y)
        
        // ' ! ' 强行解包 --从可选值中获取对应的值(非空值) 如果是 nil值 就会 奔溃程序
        // 程序员 必须为每一个‘ !’ 负责
        print(x! + y!)

        ```
     总结:
     定义可选项 使用 ?
     解包使用 !
     ? 是在 定义时候用的
     ! 是在 解包用的,准备计算用的
     程序中少用 ! 
   /*
    let possibleNumber: Int? = Int("42")
    let possibleSquare = possibleNumber.map { $0 * $0 }
    print(possibleSquare)
    // Prints "Optional(1746)"
    
    let noNumber: Int? = nil
    let noSquare = noNumber.map { $0 * $0 }
    print(noSquare)
    // Prints "nil"
    
    */
        
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容