Swift 是什么意思:'case .success(let dict):'
What does it mean in Swift: 'case .success(let dict):'
在 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:
中的含义以及字典(或错误)从何而来?这种语法糖是否更冗长但不那么令人困惑?
在 Swift 中,枚举可以具有关联值 (docs)。这意味着,您可以将对象与案例相关联。 (let dict)
部分只是意味着 - 获取关联值,并放入名为 dict
.
的 let
常量中
在 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:
中的含义以及字典(或错误)从何而来?这种语法糖是否更冗长但不那么令人困惑?
在 Swift 中,枚举可以具有关联值 (docs)。这意味着,您可以将对象与案例相关联。 (let dict)
部分只是意味着 - 获取关联值,并放入名为 dict
.
let
常量中