それは私の理解です
var perhapsInt : Int?
これは自動的に.None
値に設定されます。そして、以下のコードスニペットはそれを確認します(コンパイラエラーなし)
class MyClass {
var num1: Int = 0
var num2: Int?
init(num1: Int) {
self.num1 = num1
}
}
var newClass = MyClass(num1: 5)
newClass.num1 // prints '5'
newClass.num2 // prints 'nil'
オプションの初期化プロセスに関する私の理解は正しいですか? num2
もしそうなら、私がに変更したときにこれが機能しないのはなぜですかlet
。
nil
を使用すると、オプションのデフォルトが同じ動作をすることを期待していましたlet
。ここで何か不足していますか?
class MyClass {
var num1: Int = 0
let num2: Int?
init(num1: Int) {
self.num1 = num1
// compiler error : return from initialiser without initialising all stored properties
}
}
...
私の質問は、これらの両方のケースがどのように真実であるかということです。どちらかである必要はありません。オプションの値が自動的に設定される.None
か、設定されません。