在下面的代碼中,爲什麼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
被聲明爲可選變量,這意味着如果該變量是零則命令使用此變量將被忽略。
例子:
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar? = 5 // this command will be ignored bcz somevar is nil
}
}
要在我們自己的風險強行執行的命令,我們使用「隱式展開可選」,使我們確信,命令將被執行被執行,在這種情況下,下面一行
somevar! = 5
fatal error: unexpectedly found nil while unwrapping an Optional value
在執行這行,爲什麼「5」不分配給「somevar」,而不是出現致命錯誤?
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar! = 5
}
}
爲var賦值的正確方法是'somevar = 5'而不是'somevar? = 5' –