swift - 当一个类型同时符合 URLRequestConvertible 和 URLConvertible 时,会调用 SessionManager 中的哪个请求方法?
问题描述
这似乎更像是一个 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 学习材料中了解方法重载。
推荐阅读
- oracle - 我删除了我的 Oracle Application Express 中的主页,我该如何恢复它?
- report - reReport 从 OBIEE11g 移至 OBIEE 12c 未显示在目录中
- php - 带有身份验证的 Laravel 路由
- css - 当文本换行到下一行时添加不同的样式
- c++ - glCallList 内存泄漏
- linux - 在 bash 脚本中用多行文本替换模式
- javascript - 像对象一样从开始到结束拆分字符串
- .net - 如何在 Bot Framework 中将数据从 RootDialog 传递到 LuisDialog
- python - Python - 解析 html 响应
- java - Guice 如何将依赖项注入从动态加载的类实例化的对象