在Swift中意味着什么:' case .success(let dict):'

时间:2017-03-31 12:33:47

标签: ios swift alamofire promisekit

在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) 
(...)

我不知道的是letcase:行中的含义以及dict(或错误)来自何处?这种语法糖是否更加冗长但不那么令人困惑?

1 个答案:

答案 0 :(得分:5)

在Swift中,枚举可以有关联的值(docs)。这意味着,您可以将对象与案例相关联。部分(let dict)仅表示 - 获取相关值,并输入名为let的{​​{1}}常量。