[解決済み] Swiftの静的関数変数
2023-01-31 18:08:25
質問
私はSwiftで関数に局所的にのみスコープされた静的変数を宣言する方法を見つけ出そうとしています。
C言語では、これは次のように見えるかもしれません。
int foo() {
static int timesCalled = 0;
++timesCalled;
return timesCalled;
}
Objective-Cでも、基本的には同じです。
- (NSInteger)foo {
static NSInteger timesCalled = 0;
++timesCalled;
return timesCalled;
}
しかし、私はSwiftでこのようなことを行うことができないようです。 私は以下の方法で変数を宣言してみました。
static var timesCalledA = 0
var static timesCalledB = 0
var timesCalledC: static Int = 0
var timesCalledD: Int static = 0
しかし、これらはすべてエラーになります。
- 最初のものは "Static properties may only be declared on a type" を訴えます。
-
2つ目は "期待される宣言" を訴えています (ここで
static
は)、"Expected pattern"は(ここでtimesCalledB
は) -
3つ目は、"1行の連続したステートメントは、';'"'で区切らなければならない(コロンと
static
の間のスペース)と "期待されるタイプ" (ここでstatic
は) -
4つ目は、"1行の連続したステートメントは、';'で区切らなければならない "(間のスペースは、';'です。
Int
とstatic
) と "期待される宣言" (等号の下に)
どのように解決するのですか?
Swiftは、クラス/構造体にアタッチされていない静的変数をサポートしていないと思います。静的変数を持つプライベート構造体を宣言してみてください。
func foo() -> Int {
struct Holder {
static var timesCalled = 0
}
Holder.timesCalled += 1
return Holder.timesCalled
}
7> foo()
$R0: Int = 1
8> foo()
$R1: Int = 2
9> foo()
$R2: Int = 3
関連
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] 静的クラスとシングルトンパターンの違い?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] JavaScriptの静的変数
-
[解決済み] Pythonの関数内の静的変数に相当するものは何ですか?
-
[解決済み] Swiftのクラスにおける静的関数/変数とクラス関数/変数?
-
[解決済み】JavaScriptの関数にデフォルトのパラメータ値を設定する
-
[解決済み】関数はパラメータとして渡すことができますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MIPSの関数(プロシージャ)について
-
[解決済み] 与えられた名前と引数の型に一致する関数がない
-
[解決済み] MATLAB関数におけるオプションの引数
-
[解決済み] 関数内でのOCamlのシンタックスエラー
-
[解決済み】「関数」と「プロシージャ」の違いは何ですか?
-
[解決済み] バリューレシーバー vs. ポインターレシーバー
-
[解決済み] Clojureで関数の引数にデフォルト値を作成する方法
-
[解決済み] Goでネストした関数宣言を許可しないことで軽減される問題は何ですか?
-
[解決済み] Visual Studioで関数のドキュメントを自動生成する
-
[解決済み] 関数の引数のデフォルト値を定義する