LoginSignup
4
4

More than 3 years have passed since last update.

【Swift】スコープについて

Posted at

スコープの種類

スコープは以下の2種類に分類することができる
・ ローカルスコープ
・ グローバルスコープ

ローカルスコープ

ifforなどの制御構文や関数内で定義されるスコープ
制御構文や関数内などで定義された定数・変数はその外部から使用することができない

制御構文の例

if true {

    // hoge関数内で定数a、変数bを宣言
    let a = 100
    var b = 200

}


print(a) // エラー!
print(b) // エラー!

上記の様に、制御構文内で定義された(= ローカルスコープ)定数や変数を関数外で使用することはできない

if true {

    // hoge関数内で定数a、変数bを宣言
    let a = 100
    var b = 200

    print(a) // -> 100
    print(b) // -> 200
}

上記の様に、関数内であれば使用することができる

関数の例

func hoge() {

    // hoge関数内で定数a、変数bを宣言
    let a = 100
    var b = 200

}

print(a) // エラー!
print(b) // エラー!

上記の様に、関数内で定義された(= ローカルスコープ)定数や変数を関数外で使用することはできない

func hoge() {

    // hoge関数内で定数a、変数bを宣言
    let a = 100
    var b = 200

    print(a)
    print(b)
}

hoge() // -> 100
       //    200

上記の様に、関数内であれば使用することができる

グローバルスコープ

制御構文や関数など、どの範囲にも含まれないスコープ

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

上記の様に、どこからでも使用することができる
どこからでも使用できるグローバルスコープは便利である反面、意図しない変更が生じるリスクがあるので使用する際は注意が必要

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4