September 14, 2021

Сокращенные имена параметров

Мы только что сделали функцию travel(). Он принимает один параметр, который является замыканием, которое само принимает один параметр и возвращает строку. Затем это замыкание выполняется между двумя вызовами print().

Вот что в коде:

func travel(action: (String) -> String) {
    print("I'm getting ready to go.")
    let description = action("London")
    print(description)
    print("I arrived!")
}

Мы можем вызвать travel(), используя что-то вроде этого:

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"
}