注意:这个程序基本上是打印到控制台输出窗口,我也粘贴了整个程序,这样就不会混淆谁回答我的基本问题。
问题:'如何设置'观察员在这里工作,我很困惑,代码是什么:'?减速:加速'在代码之后:'(speed> speedLimit)'对于?然后它在最后调用changeSpeed()??
changeSpeed只是一个空变量函数,这里的整个didSet逻辑特别令人困惑,'?'在代码之前:'减速:加速'
class Vehicle {
var speed: Int
var speedLimit: Int {
willSet {
println("Preparing to change speed to \(newValue) MPH")
}
didSet {
var changeSpeed: () -> () = (speed > speedLimit) ? slowdown : speedup
while speed != speedLimit {
changeSpeed()
println("Now I'm driving \(speed) MPH because the speed limit changed to \(speedLimit) MPH from \(oldValue) MPH\n")
}
}
init(speedLimit: Int, speed: Int) {
self.speedLimit = speedLimit
self.speed = speed
println("Speed limit is \(speedLimit) MPH, I'm driving: \(speed) MPH") }
func speedup() {
println("Speeding up to \ \(--speed) MPH...")
}
}
let car = Vehicle(speedLimit: 65, speed: 65)
car.speedLimit = 55
car.speedLimit = 70
//对不起任何困惑但这里的didSet逻辑完全让我失望,我对整个程序感到更加困惑?我从一本快速的书中得到了这个。
答案 0 :(得分:1)
? :
称为三元运算符,用作condition ? valueIfTrue : valueIfFalse
。第var changeSpeed: () -> () = (speed > speedLimit) ? slowdown : speedup
行等同于:
var changeSpeed: () -> ()
if speed > speedLimit {
changeSpeed = slowdown
} else {
changeSpeed = speedup
}
didSet
中的逻辑因此基本上说: