2016-11-14 2 views
2

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

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

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

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

+0

Do CMD + Нажмите на '.get' и вы увидите объявление метода, это будет поучительно. :) Ключевые слова: callback (обработчик завершения) и трейлинг-закрытия. – Moritz

+0

Ох. Нет Xcode, так что ... Vim? ;) Хорошо, вы не увидите объявление метода, но вы все равно можете взглянуть на эти ключевые слова. Взгляните на [этот ответ] (http://stackoverflow.com/a/37343547/2227743), он показывает аналогичный пример закрывающего закрытия. – Moritz

+0

Спасибо! Я видел, что это обработчик завершения. Так что это просто обратный вызов. Большое спасибо! –

ответ

4

Это называется trailing closure syntax.

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

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

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