Сокращенные имена параметров
Мы только что сделали функцию travel()
. Он принимает один параметр, который является замыканием, которое само принимает один параметр и возвращает строку. Затем это замыкание выполняется между двумя вызовами print()
.
func travel(action: (String) -> String) { print("I'm getting ready to go.") let description = action("London") print(description) print("I arrived!") }
travel { (place: String) -> String in return "I'm going to \(place) in my car" }
Тем не менее, Swift знает, что параметром для этого замыкания должна быть строка, поэтому мы можем удалить его:
travel { place -> String in return "I'm going to \(place) in my car" }
Он также знает, что замыкание должно возвращать строку, поэтому мы можем удалить это:
travel { place in return "I'm going to \(place) in my car" }
Поскольку замыкание имеет только одну строку кода, которая должна быть той, которая возвращает значение, поэтому Swift позволяет нам также удалить ключевое слово return
:
travel { place in "I'm going to \(place) in my car" }
Swift имеет сокращенный синтаксис, который позволяет вам работать еще короче. Вместо того, чтобы писать место внутри, мы можем позволить Swift автоматически указывать имена для параметров закрытия. Они называются со знаком доллара, а затем с числа, отсчитываемого от 0.
travel { "I'm going to \($0) in my car" }