2016-11-14 41 views
2

我正在做Swift的Web框架Vapor的第一步。打開支架後的參數

的代碼,叫我注意的第一件是這樣的:

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

我不明白這裏的語法。我的意思是,我打電話給app.get()方法,但我也定義了某種功能,其中request是一個參數。我知道這將導致訪問/welcome URL的get方法,並會返回「Hello」。我不清楚這段代碼如何工作以及編譯器如何解釋它。

+0

運行cmd +點擊'.get',你會看到方法聲明,這將是啓發。 :)關鍵字:回調(完成處理程序)和尾隨關閉。 – 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" 
})