前回は ネスト について書きました。
今回は スコープ について書いていこうと思います。
スコープとは
スコープとは変数や定数が有効な範囲のことを言います。
スコープには ローカルスコープ と グローバルスコープ があります。
それぞれの特徴を見ていきましょう。
ローカルスコープの特徴
- ローカルスコープは中括弧 { } の中を指す
- ローカルスコープ内に宣言した変数や定数は、ローカル変数またはローカル定数と言う
- ローカルスコープ内に宣言された変数や定数は、中括弧 { } の中でしか使えない(ローカルスコープを抜けると破棄されるため)
//ローカルスコープ例
for _ in 0 ... 9 {
var a = 1 //ローカル変数
print(a)
}
//実行結果
/*
1
1
1
1
1
1
1
1
1
1
*/
上の例はローカルスコープ内に変数を定義して、同じスコープ内から print関数 でアクセスしている例です。
ローカル変数にアクセスするには同じスコープ内からじゃないとアクセスできません。
for _ in 0 ... 9 {
var a = 1 //ローカル変数
}
print(a) //これはエラーになります。
このようにローカルスコープの外から、ローカルスコープ内の変数や定数にアクセスしようとするとエラーになります。
グローバルスコープの特徴
- グローバルスコープはどのローカルスコープにも属さないスコープを指す
- どのローカルスコープにも属さない変数や定数は、グローバル変数またはグローバル定数と言う
- グローバルスコープは同じプロジェクト内であればどのファイルからでもアクセス可能
var b = 1
for _ in 0 ... 9 {
print(b)
}
//実行結果
/*
1
1
1
1
1
1
1
1
1
1
*/
上の例はローカルスコープの外に 変数 b を宣言して、ローカルスコープの中から print関数 でアクセスしている例です。
変数 b は中括弧 { } の外で宣言しているので、グローバルスコープ(グローバル変数)となりどこからでもアクセスできます。
グローバル変数や定数はどこからでもアクセスできて使いやすいメリットもありますが、長いプログラムになってくると変数や定数も増えてきて見づらくなってきます。
ローカルスコープ内でしか使わない変数や定数はできるだけローカルスコープ内に書いた方が、可読性の向上やエラーの回避につながると思います。
以上 スコープ についてでした。
次回は 配列型 について書いていこうと思います。
実行環境
version |
---|
Xcode 14.2 (14C18) |
Swift 5.2.4 |
公式ドキュメント
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/