Alberto Cruz Alberto Cruz - 26 days ago 6
Swift Question

Parameters after opening bracket

I am doing my first steps in Vapor, the web framework for Swift.

The first piece of code that called my attention was this:

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


I don't understand the syntaxis here. I mean, Imm calling app.get() method, but I'm also defining some kind of function where request is a parameter. I know that this will result in a get method accessible by a /welcome URL and will return "Hello". What is not clear for me is how this piece of code works and how the compiler interprets it.

Answer

This is called trailing closure syntax.

I give a nice rundown of the various syntactic sugars of closures in this answer.

The expanded version of this code would be:

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