what is the output:
var x = 5
func increment() -> Int {
defer { x += 1 }
return x
}
x = increment()
let result = increment()
print(x, result, x)
the answer is 6 5 6,i don’t know why result is 5?
>Solution :
Observe that increment always returns the current value of x. This is because defer is executed after the return statement is.
After
x = increment()
x is still 5. increment returns 5, increments x to 6, then you assign the return value to x again.
After
let result = increment()
x becomes 6, and result is 5. increment returns 5 as before, increments x to 6, then you assign the return value to result.