Próbuję dowiedzieć się, jak zadeklarować zmienną statyczną w zakresie tylko lokalnie do funkcji w języku Swift.
W C może to wyglądać mniej więcej tak:
int foo() {
static int timesCalled = 0;
++timesCalled;
return timesCalled;
}
W Objective-C jest w zasadzie to samo:
- (NSInteger)foo {
static NSInteger timesCalled = 0;
++timesCalled;
return timesCalled;
}
Ale wydaje mi się, że nie mogę zrobić czegoś takiego w Swift. Próbowałem zadeklarować zmienną w następujący sposób:
static var timesCalledA = 0
var static timesCalledB = 0
var timesCalledC: static Int = 0
var timesCalledD: Int static = 0
Ale to wszystko prowadzi do błędów.
- Pierwsza narzeka: „Właściwości statyczne mogą być deklarowane tylko dla typu”.
- Drugi narzeka „Oczekiwana deklaracja” (gdzie
static
jest) i „Oczekiwany wzorzec” (gdzietimesCalledB
jest) - Trzeci narzeka „Kolejne instrukcje w wierszu muszą być oddzielone znakiem„; ”” (w odstępie między dwukropkiem a
static
) i „Oczekiwany typ” (gdziestatic
jest) - Czwarty dotyczy „Kolejne stwierdzenia w wierszu muszą być oddzielone znakiem„; ”” (w spacji między
Int
istatic
) oraz „Oczekiwana deklaracja” (pod znakiem równości)