我是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'是'let'常量 thermometerStruct.registerTemperature(温度:56.0) ^ ~~~~~~~~~~~~~~~~
第13行,第5栏的信息:将'let'更改为'var'以使其变为可变 let thermometerStruct = ThermometerStruct() ^ ~~ VAR
答案 0 :(得分:2)
错误消息已经告诉您,您需要更改什么。将let
替换为var
。
struct
s值类型。这意味着,如果修改struct
的任何属性,则需要将实例声明为var
。
当您的struct
有一个方法,即修改结构的某个属性时,此方法为mutable
。 mutable
方法只能在您声明为var
的实例上调用。
答案 1 :(得分:2)
如果您在 lazy
中使用 struct
var 并且将其传递给函数或具有对象的 let
引用,请访问 {{1} } 对对象隐式 lazy var
。
所以你需要用它制作一个 mutating
。
var
...
struct Test {
lazy var a: String = ""
}