function - Swift 中的静态函数变量

标签 function static swift

我正在尝试弄清楚如何在 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是)
  • 第四个提示“一行上的连续语句必须用';'分隔”(在Intstatic之间的空格)和“预期声明”(在等号)

最佳答案

我认为 Swift 不支持没有附加到类/结构的静态变量。尝试用静态变量声明一个私有(private)结构。

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

关于function - Swift 中的静态函数变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25354882/

相关文章:

c++ - 使用非类型模板参数转发声明函数模板

c++ - 解析一个 int(x) 参数

javascript - LiveCycle Javascript 函数引用错误

c# - 索引超出绑定(bind)异常

asp.net - 在 ASP.NET 应用程序中存储单例实例的最佳实践

ios - 在两个局部变量之间的仪器中检测到泄漏

javascript - 如何编写识别不平衡括号的函数

java - 为什么 java.lang.ExceptionInInitializerError 没有一个包含消息和原因的构造函数?

swift : Changin content of an image from another Container

ios - 如何在相机向下看的轴上旋转 SCNNode?