此代码用于回答此问题:
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, ....) { .... });
有人可以解释为什么完成处理程序不是方法调用中的第二个参数吗?
答案 0 :(得分:2)
如果需要将闭包表达式传递给函数作为 函数的最终参数和闭包表达式很长,它可以 相反,将它写为尾随闭包很有用。落后 closure是一个封闭表达式,写在(和之后)之外 它支持的函数调用的括号