-3

次のコードで、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
    }
}
4

2 に答える 2