首页 > 试题广场 >

Swift 1.0 or later 下面是thermome

[问答题]

Swift 1.0 or later

下面是thermometer作为类和结构体的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class ThermometerClass {
private(set) var temperature: Double = 0.0
public func registerTemperature(temperature: Double) {
self.temperature = temperature
}
}
let thermometerClass = ThermometerClass()
thermometerClass.registerTemperature(56.0)
public struct ThermometerStruct {
private(set) var temperature: Double = 0.0
public mutating func registerTemperature(temperature: Double) {
self.temperature = temperature
}
}
let thermometerStruct = ThermometerStruct()
thermometerStruct.registerTemperature(56.0)

但是这段代码编译失败了,请问哪里报错,出错的原因是什么。

建议:在使用Playground之前,认真阅读代码并思考。

推荐
代码的最后一行不会被编译通过。ThermometerStruct结构体中正确的声明了一个mutating属性函数,它是用来改变结构体内部temperature属性的值的,但是编译器不通过的原因是,通过let创建的不可变的registerTemperature结构体调用了registerTemperature函数。
发表于 2018-07-12 20:39:07 回复(0)