LoginSignup
51
48

More than 5 years have passed since last update.

Swift2の定数宣言方法まとめ

Posted at

Swift 2.0 を使っているのですが、アプリケーション内やクラス内で定数宣言をする際に、
書き方や宣言場所によってスコープや利用方法が変わってくるのでまとめてみました。

定数名 宣言場所 接頭辞 スコープ
ConstantA クラス宣言の外側 let 同一のモジュール内でどこでも使える
ConstantB クラス宣言の外側 private let 同一のファイル内でどこでも使える
ConstantC クラス宣言の内側 static let 同一のモジュール内でクラス変数としてどこでも使える
ConstantD クラス宣言の内側 private static let 同一のファイル内でクラス変数としてどこでも使える
ConstantE クラス宣言の内側 let 同一のモジュール内でインスタンス変数としてどこでも使える
ConstantF クラス宣言の内側 private let 同一のファイル内でインスタンス変数どこでも使える
SomeClass.swift

let ConstantA = "A"
private let ConstantB = "B"

class SomeClass: NSObject {

    static let ConstantC = "C"
    private static let ConstantD = "D"

    let ConstantE = "E"
    private let ConstantF = "F"

    class func classMethod() {
        print("A=\(ConstantA)")
        print("B=\(ConstantB)")
        print("C=\(ConstantC)")
        print("D=\(ConstantD)")
        print("E=\(ConstantE)") // コンパイルエラー
        print("F=\(ConstantF)") // コンパイルエラー
    }

    func instanceMethod() {
        print("A=\(ConstantA)")
        print("B=\(ConstantB)")
        print("C=\(ConstantC)") // コンパイルエラー
        print("D=\(ConstantD)") // コンパイルエラー
        print("E=\(ConstantE)")
        print("F=\(ConstantF)")
    }

}
OtherClass.swift
// SomeClass とは別のファイル
class OtherClass: NSObject {

    class func method() {
        print("A=\(ConstantA)")
        print("B=\(ConstantB)") // コンパイルエラー: privateなので参照できない
        print("C=\(SomeClass.ConstantC)")
        print("D=\(SomeClass.ConstantD)") // コンパイルエラー: privateなので参照できない
        print("E=\(SomeClass().ConstantE)")
        print("F=\(SomeClass().ConstantF)") // コンパイルエラー: privateなので参照できない
    }
}
51
48
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
51
48