更新时间:2018-09-25 15:47作者:王华老师
nil==.None//OnSwift1.xthisdoesn'tcompile.YouneedOptional
.None
记住枚举类型的Optional下的None:
enumOptional{
caseNone
caseSome(T)
}
问题2-Swift1.0orlater
下面是thermometer作为类和结构体的例子:
publicclassThermometerClass{
private(set)vartemperature:Double=0.0
publicfuncregisterTemperature(temperature:Double){
self.temperature=temperature
}
}
letthermometerClass=ThermometerClass()
thermometerClass.registerTemperature(56.0)
publicstructThermometerStruct{
private(set)vartemperature:Double=0.0
publicmutatingfuncregisterTemperature(temperature:Double){
self.temperature=temperature
}
}
letthermometerStruct=ThermometerStruct()
thermometerStruct.registerTemperature(56.0)
但是这段代码编译失败了,请问哪里报错,出错的原因是什么。
建议:在使用Playground之前,认真阅读代码并思考。
答案:代码的最后一行不会被编译通过。ThermometerStruct结构体中正确的声明了一个mutating属性函数,它是用来改变结构体内部temperature属性的值的,但是编译器不通过的原因是,通过let创建的不可变的registerTemperature结构体调用了registerTemperature函数。