定義變量時,若是指定是可選的
,表示該變量能夠有一個指定類型的值,也能夠是 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) } }