输出结果:
var x = 5
func increment() -> Int {
defer { x += 1 }
return x
}
x = increment()
let result = increment()
print(x, result, x)
答案是6 5 6,我不知道为什么结果是5?
观察increment
总是返回x
的当前值。这是因为defer
是在return
语句之后执行的。
x = increment()
x
仍然是5。increment
返回5,将x
加1为6,然后再次将返回值赋给x
。
let result = increment()
x
变为6,result
变为5。increment
像以前一样返回5,将x
加1为6,然后将返回值赋给result
。