2017-12-06 16 views
0

私は突然、学習している間は自分自身を不思議に思った: は、なぜ我々はグローバル(でも、クラスの範囲を超えて)変数の初期値を提供しなければならないのが、我々はこのようなローカル変数と同じ工程を行う必要はありませんか?何か理由はありますか?なぜ我々は、ローカル変数の初期値を提供する必要はありませんか?

if importRequired { 
    let deleteObjectCount: Int  
} 
+0

スウィフトコンパイラはグローバル変数にローカル変数の決定的な初期分析を行いますが、ではないので。 https://developer.apple.com/swift/blog/?id=28 – Alexander

+0

@ N.Khasanovそれがこのトピック –

+0

十分に「近い」の場合)申し訳ありませんが、まだ行っ以下の答えを受け入れる –

答えて

2

コードではdeleteObjectCountが使用されていないため、これは許可されています。そして - これはグローバル変数との違いである - この事実は、コンパイラによって確認することができます。

あなたも、のような何かができる:

let importRequired = true 

if importRequired { 
    let deleteObjectCount: Int  
    deleteObjectCount = 5 
    print (deleteObjectCount) 
} 

(例えば種類-の定数let変数を変更)定数のみ一度書き込まれ、これは前に行われていることをコンパイラチェック理由それを読む価値がある。これとは対照的に

そうでない場合、コンパイラは(あなたのプログラム内のどこからでもアクセスできる可能性があるため)彼らが初期化される前のようだったことを保証することはできませんので、グローバル変数は、直接初期化する必要があります。

+0

てくださいありがとう助けて! –

関連する問題