1. ホーム
  2. swift

swiftで定数/不変量を定義するために「let」キーワードを使用する場合、「static」キーワードはどのように使用しますか?

2023-09-24 04:41:27

質問

を使うのに少し戸惑っています。 静的 キーワードの使用について少し混乱しています。ご存知のように、swiftでは を導入しています。 キーワードを導入しています。例えば、テーブルビューのセルのIDを宣言するようなもので、その寿命が尽きるまで変わることはないでしょう。では static キーワードは何のためにあるのでしょうか?

struct classConstants
{
    static let test = "test"
    static var totalCount = 0
}

ここで させる Objective C では static を使って次のような定数を宣言しています。

static NSString *cellIdentifier=@"cellId";

さらに、私が興味を持ったのは、このように 静的 キーワードと としてください。 であり、さらに var というキーワードがあります。この静的キーワードをどこで使えばいいのか、誰か説明してください。もっと重要なことは、私たちは本当に 静的 が必要なのでしょうか?

どのように解決するのですか?

分解して説明します。

  • var : 変数を作成するために使用します。
  • let : 定数の作成に使用されます。
  • static : を作成するために使用されます。 タイプのプロパティ を作成します。 let または var . これらは、クラスのすべてのオブジェクト間で共有されます。

これで、目的の結果を得るために組み合わせることができます。

  • static let key = "API_KEY" : 定数である型プロパティ
  • static var cnt = 0 : 変数であるタイププロパティ
  • let id = 0 : 定数(一度だけ代入可能、ただし実行時に代入可能)
  • var price = 0 : 変数

つまり、varとletは可変性を定義し、staticとlack of scopeは定義しないということです。例えば static var を使ってインスタンスの数を記録することもできますし、単に var を使いたいかもしれません。これで少しはすっきりしたでしょうか。

コード例です。

class MyClass{
    static let typeProperty = "API_KEY"
    static var instancesOfMyClass = 0
    var price = 9.99
    let id = 5

}

let obj = MyClass()
obj.price // 9.99
obj.id // 5

MyClass.typeProperty // "API_KEY"
MyClass.instancesOfMyClass // 0