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

Ent*_*ize 2 ios swift xcode6 ios8

在苹果网站上,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)
Run Code Online (Sandbox Code Playgroud)

错误:

游乐场执行失败:TestPlayground2.playground:12:17:错误:无法分配给'人'中的'lastName'person.lastName ="ChangedLastName"~~~~~~~~~~~~~~~~ ^

小智 7

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

var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
person.lastName = "ChangedLastName" //No problem!
Run Code Online (Sandbox Code Playgroud)

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


vad*_*ian 5

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

var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
Run Code Online (Sandbox Code Playgroud)