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

时间:2015-08-29 21:15:38

标签: ios swift ios8 xcode6

在苹果网站上,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)

错误:

  

游乐场执行失败:TestPlayground2.playground:12:17:错误:无法分配给&#39; lastName&#39;在&#39; person&#39;   person.lastName =&#34; ChangedLastName&#34;   ~~~~~~~~~~~~~~~ ^

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:4)

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

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

答案 2 :(得分:0)

使用&#39; let&#39;你声明的语法&#39; person&#39;作为常数,这意味着它的属性不能被改变。只需改变&#39;让&#39;到&#39; var&#39;并且错误将消失。

以下是有关&#39; let&#39;之间差异的更多信息。和&#39; var&#39;在swift:What is the difference between `let` and `var` in swift?