Swift变量值返回原始循环后

时间:2015-10-12 17:09:50

标签: swift pass-by-value

我有这个简单的代码:

for index in 0..<people.count {
    var person = people[index]
    var home = homes[index]
    person.home = home
    println("\(person.home)")
}

for index in 0..<people.count {
   var person = people[index]
   println("\(person.home)")
}

人:

struct Person: Deserializable {
    var home: Home?

    init() { }

    init(data: [String : AnyObject]) {
        home <-- data["home"]
    }
}

在第一个循环的println语句中,它会将home分配给它各自的person并打印正确的home

在第二个循环中,它打印nil(恢复正常)。这几乎就好像第一个循环没有效果。

我不知道如何调试它。请帮忙

1 个答案:

答案 0 :(得分:4)

您不会提供有关 的人的任何信息。但假设它是一个结构。然后我不希望对people阵列的人产生任何影响,因为var person = people[index]中的人是副本

因此,在这种情况下,您需要在第一个循环中添加一行,将更改后的人员写回数组:

people[index] = person