2017-03-31 6 views
1

スウィフトPromiseKitライブラリでAlamofire例は、少し奇妙な構文を使用してあります。それはスウィフトにどういう意味:「ケース.success(dictのを聞かせて):」

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は、関連するとの2例を説明Alamofire列挙型であります値:

public enum Result<Value> { 
    case success(Value) 
    case failure(Error) 
(...) 

私はletがそれぞれcase:ラインとdictの(またはエラー)から来ないで何を意味している得ることはありませんか?この文法的な砂糖は、もっと冗長ではありますが、あまり混乱しないものですか?

答えて

4

Swiftでは、列挙型には値(docs)が関連付けられている可能性があります。つまり、オブジェクトをケースに関連付けることができます。部分(let dict)は単に、関連する値をとり、dictという名前の定数letに入れることを意味します。

+1

基本的には、enumが.successまたは.failureであることをテストしており、 '(let xxx)'部分は基本的に、関連する値のショートカットゲッターの一種ですか? – konrad

+0

正しい。また、 'case let .success(dict):' –

+0

と書くこともできます。スウィフトシンタックスは、時にはそれが許すショートカットで私を驚かせることはありません。 :-) – konrad

関連する問題