Ребят привет! Не могу понять, что происходит под «капотом» когда выполняется цикл, а именований каким образом происходит вызов функции chooseStepFunction. Или она и вовсе не вызывается? Может константа moveNearerToZero после инициализации ссылается на func stepBackward? Хочу понять как думает компилятор в данном случае.
``` func stepForward(_ input: Int) -> Int {
return input + 1
}
func stepBackward(_ input: Int) -> Int {
return input - 1
}
func chooseStepFunction (_ backward: Bool) -> (Int) -> Int {
return backward ? stepBackward : stepForward
}
var i = 3
let moveNearerToZero = chooseStepFunction(i > 0)
while i != 0 {
print("\(i)...")
i = moveNearerToZero(i)
} ```