如何更改 Swift 结构中存储的变量 属性?

How to change a variable stored property in a structure in Swift?

在苹果网站上,https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Properties.html 它指出我们可以更改结构中的变量 属性。我正在尝试更改此人的姓氏。但是我在该行代码处收到错误。谢谢你帮助我。

import UIKit


struct people {
    let firstName : String
    var lastName : String
}

let person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
person.lastName = "ChangedLastName" //<-- error

println(person.firstName)
println(person.lastName)

错误:

Playground execution failed: TestPlayground2.playground:12:17: error: cannot assign to 'lastName' in 'person' person.lastName = "ChangedLastName" ~~~~~~~~~~~~~~~ ^

如果结构声明为 var,则只能修改结构的 属性,而不是 let。即使你的 属性 是 var,因为结构是 let 它是不可变的。

var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
person.lastName = "ChangedLastName" //No problem!

请注意,这与 classes 的行为不同。即使 class 的实例是常量,也可以更改 class 的可变属性。

不像class是引用类型struct是值类型。
您必须将实例声明为可变的

var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")

通过使用 'let' 语法,您已将 'person' 声明为常量,这意味着它的属性无法更改。只需将 'let' 更改为 'var',错误就会消失。

这里有关于 difference between let and var in swift 的更多信息。