繁体   English   中英

如何更改 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 执行失败:TestPlayground2.playground:12:17: 错误:无法分配给 'person' 中的 'lastName' person.lastName = "ChangedLastName" ~~~~~~~~~~~~~~~ ^

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

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

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

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

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

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

这是有关swift 中letvar之间区别的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM