5

在 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:行的含义以及字典(或错误)来自哪里?这种语法糖是为了更冗长但不那么混乱吗?

4

1 回答 1

8

在 Swift 中,枚举可以有关联的值(docs)。这意味着,您可以将对象与案例相关联。这部分(let dict)只是意味着 - 获取关联的值,并放入一个let名为dict.

于 2017-03-31T12:45:41.177 回答