【Swift】変数のローカルスコープとグローバルスコープについて

1. ローカルスコープとグローバルスコープ

次のように変数を定義する場所でスコープが決まります。

2. ローカルスコープ

関数(func)や制御構文( ifなど )の内部で定義した変数はローカルスコープになります。

定義した関数や制御構文からのみアクセスできます。

ざっくり表現すると括弧 { } 内で定義した変数はローカルスコープの変数になります。

3. グローバルスコープ

ローカルスコープ以外で定義した変数はグローバルスコープになります。

どこからでもアクセス可能な変数になります。

changeVal関数内で、グローバル変数(globalVal)の値を変更するため、最後のprintでは変数globalValの値が b になります。

4. 同じ名前の変数がある場合、どちらの値が使用されるか?

同じスコープ内で同名の変数を定義するとエラーになりますが、スコープが異なると同名変数を定義することができます。

変数nameの値を出力すると、それぞれのスコープで宣言した変数に優先してアクセスします。

5. スコープの使い分け

基本的に特別な事情がない限りは、ローカルスコープで宣言・使用することをお勧めします。

グローバルスコープの変数は、どこからでもアクセスできて便利ですがプログラムを保守するうえで、変数の影響範囲が大きくなり、バグの温床になることもあるので多用はお勧めできません。

使用する場合は、変数の意味をきちんとコメントとして残しておく必要があると思います。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする