在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:
行中的含义以及dict(或错误)来自何处?这种语法糖是否更加冗长但不那么令人困惑?
答案 0 :(得分:5)
在Swift中,枚举可以有关联的值(docs)。这意味着,您可以将对象与案例相关联。部分(let dict)
仅表示 - 获取相关值,并输入名为let
的{{1}}常量。