如何更改 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 execution failed: TestPlayground2.playground:12:17: error: cannot assign to 'lastName' in 'person'
person.lastName = "ChangedLastName"
~~~~~~~~~~~~~~~ ^
如果结构声明为 var
,则只能修改结构的 属性,而不是 let
。即使你的 属性 是 var
,因为结构是 let
它是不可变的。
var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
person.lastName = "ChangedLastName" //No problem!
请注意,这与 classes 的行为不同。即使 class 的实例是常量,也可以更改 class 的可变属性。
不像class
是引用类型struct
是值类型。
您必须将实例声明为可变的
var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
通过使用 'let' 语法,您已将 'person' 声明为常量,这意味着它的属性无法更改。只需将 'let' 更改为 'var',错误就会消失。
这里有关于 difference between let
and var
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 execution failed: TestPlayground2.playground:12:17: error: cannot assign to 'lastName' in 'person' person.lastName = "ChangedLastName" ~~~~~~~~~~~~~~~ ^
如果结构声明为 var
,则只能修改结构的 属性,而不是 let
。即使你的 属性 是 var
,因为结构是 let
它是不可变的。
var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
person.lastName = "ChangedLastName" //No problem!
请注意,这与 classes 的行为不同。即使 class 的实例是常量,也可以更改 class 的可变属性。
不像class
是引用类型struct
是值类型。
您必须将实例声明为可变的
var person = people(firstName: "InitialFirstName", lastName: "InitialLastName")
通过使用 'let' 语法,您已将 'person' 声明为常量,这意味着它的属性无法更改。只需将 'let' 更改为 'var',错误就会消失。
这里有关于 difference between let
and var
in swift 的更多信息。