【发布时间】:2016-10-29 09:55:55
【问题描述】:
我是 swift 的新手。我正在尝试几种方法,但是当尝试提示错误时我失败了,然后发生了另一个错误。我不知道这里到底发生了什么
public struct ThermometerStruct {
var temperature: Double = 0.0
public mutating func registerTemperature(temperature: Double) {
self.temperature = temperature
}
}
let thermometerStruct = ThermometerStruct()
thermometerStruct.registerTemperature(temperature : 56.0)
第 14 行第 5 列出现错误:不能在不可变值上使用变异成员:“thermometerStruct”是“让”常量 thermometerStruct.registerTemperature(温度:56.0) ^~~~~~~~~~~~~~~~~
第 13 行第 5 列的信息:将 'let' 更改为 'var' 以使其可变 让 thermometerStruct = ThermometerStruct() ^~~ 变量
【问题讨论】:
-
将
let更改为var时出现什么错误? -
由于
structs 在 Swift 中是 value 类型,因此结构实例的任何成员属性的任何突变都意味着实例本身的突变。因此,要改变其成员,您需要遵循 Hamish 的建议并将thermometerStruct实例从不可变 (let) 更改为可变 (var) 变量。如果ThermometerStruct改为class,您可以将ThermometerClass实例标记为不可变(let),但仍然可以改变它的可变成员属性,因为class类型是reference Swift 中的类型。
标签: swift