Я пытаюсь понять, как объявить статическую переменную, ограниченную только локально функцией в 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
есть) и «Ожидаемый образец» (гдеtimesCalledB
есть). - Третий жалуется: «Последовательные операторы в строке должны быть разделены символом ';'» (в пространстве между двоеточием и
static
) и «Ожидаемый тип» (гдеstatic
есть) - Четвертый жалуется: «Последовательные утверждения в строке должны быть разделены знаком "; "(в пробеле между
Int
иstatic
) и" Ожидаемое объявление "(под знаком равенства).