定义变量时,如果指定是
可选的
,表示该变量可以有一个指定类型的值,也可以是 nil
定义变量时,在类型后面添加一个
?
,表示该变量是可选的变量可选项的默认值是
nil
常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值
//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算let num: Int? = 10
如果 Optional 值是
nil
,不允许参与计算只有
解包(unwrap)
后才能参与计算在变量后添加一个
!
,可以强行解包
可选项:一个变量,可以为本身的类型,也可以为 nil
// * 可选项不能直接计算
// ! - `强行解包 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)
}
}