Например, возьмите этот код:Confused о том, как Swift вложенные функции работают
func jediTrainer() -> ((String, Int) -> String) {
func train(name: String, times: Int) -> (String) {
return "\(name) has been trained in the Force \(times) times"
}
return train
}
let train = jediTrainer()
train("Obi Wan", 3)
Я совершенно запутался, что происходит в этой функции. jediTrainer не принимает никаких параметров и возвращает функцию, называемую train. Когда мы говорим «train = jediTrainer()», мы теперь сохраняем «поезд» FUNCTION в переменной, называемой «train», так как она возвращает эту функцию, которая теперь хранится в переменной? Не могли бы вы сломать, что именно происходит здесь, в шагах? Спасибо огромное!
Что вас пугает, так это то, что вы дали своей новой функции одноименное имя. jediTrainer не принимает никаких параметров, но возвращает функцию, которая принимает два параметра. Вы создали новую функцию с именем train, которая ведет себя точно так, как должна. –
Благодарим вас за ответ. Итак, поезд VARIABLE хранит поезд FUNCTION, который вы затем можете вызвать? – rb612
var может быть любым, включая функцию –