我试图弄清楚如何声明一个静态变量,其范围仅限于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
Int
我不认为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