[英]Can you help me understand this Swift method?
我是第一次使用Swift和AlamoFire库构建应用程序。 我之前使用Obj-C和AFNetworking构建了应用程序,但是我很难理解这种Swift响应方法:
Alamofire.request(.GET, "http://someapi.com/thing.json")
.responseJSON { _, _, JSON, _ in
println(JSON)
}
实际的方法定义为:
public func responseJSON(options: NSJSONReadingOptions = .AllowFragments, completionHandler: (NSURLRequest, NSHTTPURLResponse?, AnyObject?, NSError?) -> Void) -> Self {
return response(serializer: Request.JSONResponseSerializer(options: options), completionHandler: { request, response, JSON, error in
completionHandler(request, response, JSON, error)
})
}
当我使用这种响应方法时,我真的不明白这里发生了什么。
为什么在方法调用中不使用括号?
我只是将一个block或匿名函数传递给此方法吗?
下划线( _
)的意义是什么?
in
关键字在做什么?
一切都在这里: https : //developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html#//apple_ref/doc/uid/TP40014097-CH11-ID102
没有括号:这是结尾的封闭语法。 想法是闭包可能会变得很长,很难记住/确定长距离配对。
是的,block =匿名函数=(匿名)闭包。 是的,您将其作为唯一参数传递。 由于省略了它,所以'options'的默认值为'.AllowFragments'。 尾随闭包{ ... }
绑定到completionHandler
参数。
“ _”是“不关心此参数”的语法...例如,如果函数不使用该参数,则没有必要为其赋予本地名称。
in
是闭包语法的一部分:指示函数主体的开始。 一定要阅读上面的整个闭包语法章节。 它的设计非常简洁,没有直观的提示。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.