Параметры после открытия скобки

Я делаю свои первые шаги в Vapor, веб-фреймворке для Swift.

Первый фрагмент кода, который привлек мое внимание, был следующим:

app.get("welcome") { request in 
    return "Hello"
}

Я не понимаю здесь синтаксиса. Я имею в виду, что я вызываю метод app.get(), но я также определяю какую-то функцию, в которой запрос является параметром. Я знаю, что это приведет к методу get, доступному по /welcome URL, и вернет "Hello". Мне непонятно, как работает этот фрагмент кода и как его интерпретирует компилятор.


person Alberto Cruz    schedule 14.11.2016    source источник
comment
Сделайте CMD + щелкните .get, и вы увидите объявление метода, оно будет поучительным. :) Ключевые слова: обратный вызов (обработчик завершения) и завершающие замыкания.   -  person Eric Aya    schedule 14.11.2016
comment
Ой. Нет Xcode, так что ... Vim? ;) Хорошо, вы не увидите объявления метода, но вы все равно можете взглянуть на эти ключевые слова. Взгляните на этот ответ, он показывает аналогичный пример конечного закрытия.   -  person Eric Aya    schedule 14.11.2016
comment
Спасибо! Я видел, что это обработчик завершения. Так что это просто обратный вызов. Большое спасибо!   -  person Alberto Cruz    schedule 14.11.2016


Ответы (1)


Это называется синтаксис завершающего закрытия.

Я даю хорошее краткое изложение различных синтаксических сахаров замыканий в этом ответе.

Расширенная версия этого кода будет:

app.get("welcome", { (request: Request) throws -> ResponseRepresentable in 
    return "Hello"
})
person Alexander    schedule 14.11.2016