在 Swift PromiseKit 库中有一个使用有点奇怪语法的 Alamofire 示例:
func login(completionHandler: (NSDictionary?, ErrorProtocol?) -> Void {
Alamofire.request(.GET, url, parameters: ["foo": "bar"])
.validate()
.responseJSON { response in
switch response.result {
case .success(let dict):
completionHandler(dict, nil)
case .failure(let error):
completionHandler(nil, error)
}
}
}
response
是一个 Alamofire 枚举,描述了具有关联值的两种情况:
public enum Result<Value> {
case success(Value)
case failure(Error)
(...)
我不明白的是let
每一case:
行的含义以及字典(或错误)来自哪里?这种语法糖是为了更冗长但不那么混乱吗?