定义变量时,若是指定是可选的
,表示该变量能够有一个指定类型的值,也能够是 nil
程序员
定义变量时,在类型后面添加一个 ?
,表示该变量是可选的app
变量可选项的默认值是 nil
函数
常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值url
//: num 能够是一个整数,也能够是 nil,注意若是为 nil,不能参与计算let num: Int? = 10
spa
若是 Optional 值是 nil
,不容许参与计算code
只有解包(unwrap)
后才能参与计算orm
在变量后添加一个 !
,能够强行解包对象
可选项:一个变量,能够为自己的类型,也能够为 nil
开发
// * 可选项不能直接计算string
// ! - `强行解包 unwrapping` - 程序员承诺 y 必定有值,若是没有,崩给我看!
// unexpectedly found nil while unwrapping an Optional value
// 每次写 ! 的时候,都须要程序员思考,是否是有可能为 nil!
func demo1() { // 定义变量/常量若是须要指定类型 : 类型 的方式指定准确的类型 let x: Double = 20 print(x + 1.5) // 可选项 使用 ? 定义 // y 能够是一个整数/也能够是 nil,若是是变量,默认是 nil // 注意:可选项在输出的时候,会提示 `Optional` var y: Int? //= 10 print(y) print(y! + 20) }
1. 明确可选项的概念!
2. 实际开发中,借助 Xcode 智能提示,帮助修改!
3. 每次修改,都要思考为何!
func demo2() { let urlString = "http://www.baidu.com/中文" // 注意:构造函数若是有 `?` 表示不必定可以建立出对象 let url = NSURL(string: urlString) print(url) // 注意:若是参数中,没有 ? 表示必需要有值,若是为 nil,就崩! if url != nil { let request = NSURLRequest(URL: url!) print(request) } }