次のコードで、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 が見つかりました
この行を実行すると、なぜ「somevar」に「5」が代入されずに致命的なエラーが発生するのでしょうか?
class ViewController: UIViewController {
var somevar : Int?
override func viewDidLoad() {
super.viewDidLoad()
somevar! = 5
}
}