在函数中定义的Struct

时间:2014-09-06 11:52:14

标签: struct swift

我在函数中定义了一个struct,无论我调用该函数多少次,struct definition似乎总是第一次调用函数。

代码:

    var g = 0
    func f() {
        struct InnerStruct{
            static var attr:Int = g
        }
        println("static attr value is \(InnerStruct.attr), g is \(g)")
    }

    f()
    g++
    f()
    g++
    f()

结果是:

  static attr value is 0, g is 0
  static attr value is 0, g is 1
  static attr value is 0, g is 2
  Program ended with exit code: 0

我对swift不熟悉,任何机构可以解释为什么?

2 个答案:

答案 0 :(得分:6)

此代码段说明了在Swift中初始化static属性的方式。它显示static属性在第一次调用时仅初始化一次。后续调用不会“重新分配”值:您可以看到递增gattr的值没有影响,{{1}}保持不变。

答案 1 :(得分:0)

只需使用结构的实例即可获得所需的结果

var g = 0

func f() {
    struct InnerStruct{
        var attr:Int = g
    }
    println("static attr value is \(InnerStruct().attr), g is \(g)")
}

f()
g++
f()
g++
f()

结果:

static attr value is 0, g is 0
static attr value is 1, g is 1
static attr value is 2, g is 2
相关问题