##スコープの種類
スコープは以下の2種類に分類することができる
・ ローカルスコープ
・ グローバルスコープ
##ローカルスコープ
if
やfor
などの制御構文や関数内で定義されるスコープ
制御構文や関数内などで定義された定数・変数はその外部から使用することができない
制御構文の例
.swift
if true {
// hoge関数内で定数a、変数bを宣言
let a = 100
var b = 200
}
print(a) // エラー!
print(b) // エラー!
上記の様に、制御構文内で定義された(= ローカルスコープ)定数や変数を関数外で使用することはできない
.swift
if true {
// hoge関数内で定数a、変数bを宣言
let a = 100
var b = 200
print(a) // -> 100
print(b) // -> 200
}
上記の様に、関数内であれば使用することができる
関数の例
.swift
func hoge() {
// hoge関数内で定数a、変数bを宣言
let a = 100
var b = 200
}
print(a) // エラー!
print(b) // エラー!
上記の様に、関数内で定義された(= ローカルスコープ)定数や変数を関数外で使用することはできない
.swift
func hoge() {
// hoge関数内で定数a、変数bを宣言
let a = 100
var b = 200
print(a)
print(b)
}
hoge() // -> 100
// 200
上記の様に、関数内であれば使用することができる
##グローバルスコープ
制御構文や関数など、どの範囲にも含まれないスコープ
.swift
let a = 100
var b = 200
if true {
print(a) // -> 100
print(b) // -> 200
}
func hoge() {
print(a)
print(b)
}
print(a) // -> 100
print(b) // -> 200
hoge() // -> 100
// 200
上記の様に、どこからでも使用することができる
どこからでも使用できるグローバルスコープは便利である反面、意図しない変更が生じるリスクがあるので使用する際は注意が必要