在Swift中访问全局变量

Mar*_*rco 5 swift

鉴于此示例Swift代码:

var a = 10;

func foo() -> Int {
    var a = 20;
    return a;
}
Run Code Online (Sandbox Code Playgroud)

函数foo如何访问值为10的全局变量a而不是值为20的本地a?

请注意,a和foo都不是在类中声明,而是在通用模块中声明.我正在寻找一种方法来告诉Swift访问全局定义的var而不是本地定义的var.

Bin*_*ian 5

我用Xcode创建了一个项目,一个控制台应用程序,目标在这里是一个模块。因此,我为项目命名,test并且目标具有相同的名称,因此在项目中,模块本身也具有名称test。任何全局定义都将隐式调用test.。就像全局Swift函数是对的隐式调用Swift.一样Swift.print("...")

var a = 10;

func foo() -> Int {
    let a = 20;
    Swift.print(test.a) // same as print(test.a)

    return a;
}

test.foo() // same as foo()
Run Code Online (Sandbox Code Playgroud)

输出为:

10


因此,您必须在变量之前添加模块名称,以获取全局变量而不是局部变量。