【问题标题】:How to change a variable stored property in a structure in Swift?如何在 Swift 中更改结构中的变量存储属性?
【发布时间】:2015-08-29 21:15:38
【问题描述】:

在苹果网站上,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" ~~~~~~~~~~~~~~~ ^

【问题讨论】:

    标签: ios swift ios8 xcode6


    【解决方案1】:

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

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

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

    【讨论】:

    • 我忘记了我的人是一个“让”。谢谢!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-15
        • 2015-02-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多