【发布时间】:2017-04-07 23:59:59
【问题描述】:
在下面的代码中,为什么 5 没有分配给“somevar”?
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar! = Int(5) // why 5 is not assigned to somevar here
}
}
背景:
somevar 被声明为可选变量,这意味着如果此变量为 nil,则使用此变量的命令将被忽略。
例子:
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar? = 5 // this command will be ignored bcz somevar is nil
}
}
为了自担风险强制执行命令,我们使用“隐式解包可选”,以便我们确定命令将被执行,在这种情况下会执行以下行
somevar! = 5
致命错误:在展开可选值时意外发现 nil
执行此行时,为什么没有将“5”分配给“somevar”而是发生致命错误?
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar! = 5
}
}
【问题讨论】:
-
为 var 赋值的正确方法是
somevar = 5而不是somevar? = 5
标签: swift optional forced-unwrapping