Swift - 在一行中定义多个全局变量

时间:2015-08-28 22:56:24

标签: swift variables line global definition

由于Swift 2.0我遇到了问题,如果定义了每行只有一个全局变量,那么定义全局变量只能正常工作。使用局部变量没有这样的问题。在Swift 1.0中,这种方法运行良好,但Apple发生了一些变化。

示例:

var x1: Int = 0
var y1: Int = 0
var z1: Int = 0

func Test1 ()
{
    x1 = 30
    y1 = 20
    z1 = 10
}

var x2: Int = 0, y2: Int = 0, z2: Int = 0

func Test2 ()
{
    x2 = 30
    y2 = 20
    z2 = 10
}

func main_program ()
{
    Test1()
    Test2()
    print("x1=\(x1), y1=\(y1), z1=\(z1)\n")
    print("x2=\(x2), y2=\(y2), z2=\(z2)\n")
}

当你现在调用main_program时,你会得到

x1=30, y1=20, z1=10
x2=0, y2=0, z2=10
终端中的

。但是这两行应该是相同的,并且与Swift 1.0是一致的

所以我不得不改变我的所有程序,只在一行中定义一个全局变量。如果变量是某些公式的一部分,您将获得一些有趣的结果,而不仅仅是零。

这是Swift中的错误还是有这种行为的严重背景?

1 个答案:

答案 0 :(得分:4)

来自release notes

  

Xcode 7 beta 6中的已知问题 - Swift 2.0和Objective-C

     

在单个varlet中声明多个全局变量可能会导致其值的损坏。 (22207407)解决方法:使用单独的varlet声明每个变量。