在苹果网站上,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; ~~~~~~~~~~~~~~~ ^
答案 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?