当一个类型同时符合 URLRequestConvertible 和 URLConvertible 时,会调用 SessionManager 中的哪个请求方法?
Which request method in SessionManager is called when a type conforms to both URLRequestConvertible and URLConvertible?
这似乎更像是一个 Swift 语言问题...
比如说,我有一个同时符合 URLRequestConvertible 和 URLConvertible 协议的结构:
struct Event {
let title: String
}
extension Event: URLRequestConvertible {
}
extension Event: URLConvertible {
}
let anEvent = Event(title: "testing")
Alamofire.request(anEvent)
将调用哪个 request
方法?
在我的测试中,调用了以 URLRequestConvertible 作为输入参数 (L156) 的那个。
你能给我一些在 Swift 语言社区中讨论过这个问题的建议吗? (我不太确定这类问题的计算机科学术语)
这在面向对象编程中称为方法重载。
注意你打的电话:
Alamofire.request(anEvent)
以及您引起我们注意的方法:
public func request( //(1)
_ url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil)
-> DataRequest
public func request(_ urlRequest: URLRequestConvertible) -> DataRequest //(2)
调用 Alamofire.request(anEvent)
将调用第二个函数,因为它匹配 方法签名 。
你几乎可以在任何 OOP 学习中了解方法重载 material。
这似乎更像是一个 Swift 语言问题...
比如说,我有一个同时符合 URLRequestConvertible 和 URLConvertible 协议的结构:
struct Event {
let title: String
}
extension Event: URLRequestConvertible {
}
extension Event: URLConvertible {
}
let anEvent = Event(title: "testing")
Alamofire.request(anEvent)
将调用哪个 request
方法?
在我的测试中,调用了以 URLRequestConvertible 作为输入参数 (L156) 的那个。
你能给我一些在 Swift 语言社区中讨论过这个问题的建议吗? (我不太确定这类问题的计算机科学术语)
这在面向对象编程中称为方法重载。
注意你打的电话:
Alamofire.request(anEvent)
以及您引起我们注意的方法:
public func request( //(1)
_ url: URLConvertible,
method: HTTPMethod = .get,
parameters: Parameters? = nil,
encoding: ParameterEncoding = URLEncoding.default,
headers: HTTPHeaders? = nil)
-> DataRequest
public func request(_ urlRequest: URLRequestConvertible) -> DataRequest //(2)
调用 Alamofire.request(anEvent)
将调用第二个函数,因为它匹配 方法签名 。
你几乎可以在任何 OOP 学习中了解方法重载 material。