繁体   English   中英

您能帮我理解这种Swift方法吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM