2014-09-30 110 views
2

這段代碼是用來回答這方面的問題:迅速完成處理程序語法

How to make an HTTP request in Swift?

let url = NSURL(string: "http://www.stackoverflow.com") 

let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) in 
    println(NSString(data: data, encoding: NSUTF8StringEncoding)) 
} 

task.resume() 

dataTaskWithURL文檔說以下內容:

func dataTaskWithURL(_ url: NSURL, 
    completionHandler completionHandler: ((NSData!, 
           NSURLResponse!, 
           NSError!) -> Void)?) -> NSURLSessionDataTask 

所以它出現在{(data .... }部分第一個代碼塊是完成處理程序。我來自一個Java背景的地方,這將表示,像這樣:

dataTaskWithUrl(url, function(data, ....) { .... });

有人能解釋爲什麼完成處理程序是不是在方法調用中的第二個參數?

回答

2

這是一個Trailing Closure

如果你需要一個封閉表達式傳遞給函數作爲 函數的最後一個參數和封蓋表現爲長,它可以 是它寫成一個尾隨封閉有用代替。拖地的 封是寫的 外(後)功能的括號調用它支持

+0

啊,這正是我一直在尋找一個閉合的表達。謝謝! – thatidiotguy 2014-09-30 18:33:00