2016-11-08 48 views
3

我可以以某种方式检查T的类型。我想检查这种类型是Array还是别的。类型的通用

func request<T: Mappable>(completionHandler: (Result<T>) -> Void) { 

} 

回答

2

一种方式做,这是重载方法,就像这样:

private func request<T: Mappable>(isArray: Bool, completionHandler: (Result<T>) -> Void) { 
    if isArray { 
    print("is array") 
    } else { 
    print("is not array") 
    } 
} 

func request<T>(completionHandler: (Result<Array<T>>) -> Void) { 
    request(isArray: true, completionHandler: completionHandler) 
} 

func request<T: Mappable>(completionHandler: (Result<T>) -> Void) { 
    request(isArray: false, completionHandler: completionHandler) 
} 

我假设某处您已经定义:

extension Array: Mappable {} 
+0

谢谢!这真的很有趣:) –