次の使用法の違いは何ですか?違いはありますか?クラスレベルのインスタンス化とメソッドレベルインスタンス化のスウィフトの違い
class B { }
// usage 1
class A {
var b: B = B();
}
// usage 2
class A {
var b: B!
init() {
self.b = B()
}
}
編集: は答えのいくつかは、それが初期化子内の値を取得しますので、使用量2の値はオプションである必要はないことを指摘しています。
はあなたが意図したの 'B'は、使用2ではオプションではなく、使用1になるには? –
FWIW、私はSwiftだけに手を貸して答えを知らなかったが、分かりやすいと分かっている(https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ Initialization.html)を、「デフォルト」値とイニシャライザで割り当てられた値との間で置き換えます。スーパークラス/サブクラス初期化子の順番を見ると、継承階層で微妙なことが起こっていると思われます。例えば、[JavaとC#は、逆の順序で明らかに同等の初期化コードを呼び出すことができます](https://chrononaut.org/2008/02/18/java-vs-c-more-fun-with-initializers/)。 –
私はしましたが、今はオプションである必要はないことがわかりました。 –